I'm running R 2.9.1 on winXP, using the library plyr.

Can anyone explain to me what is going wrong in this code? (in particular
see lines marked with ******************) Trying to modify objects in a list
created using dlply seems to corrupt the objects in the list.

> library(plyr)
> d=as.data.frame(cbind(c(1,1,1,2,2,2),c(1,2,3,4,5,6)))
> d
  V1 V2
1  1  1
2  1  2
3  1  3
4  2  4
5  2  5
6  2  6
> c=dlply(d,.(V1))
> c
[[1]]
  V1 V2
1  1  1
2  1  2
3  1  3

[[2]]
  V1 V2
4  2  4
5  2  5
6  2  6

## display an element from the second data frame
> c[[2]][2,2]
[1] 5

## change element in the second data from
> c[[2]][2,2]=10
> c
[[1]]
    V1 V2
2    1  2    **************
2.1  1  2   **************  What happened to V2?
2.2  1  2   **************

[[2]]
   V1 V2
4   2  4
NA NA NA **********************************
6   2  6

##Try again with first data frame
> c=dlply(d,.(V1))
> c[[1]][2,2]=10 **********************************
> c
[[1]]
NULL ********************************* YIKES!


##Try again but copy c into a new list k
> c=dlply(d,.(V1))
> k=list(c[[1]],c[[2]])
> k[[1]]
  V1 V2
1  1  1
2  1  2
3  1  3
> k[[2]][2,2]=10
> k
[[1]]
  V1 V2
1  1  1
2  1  2
3  1  3

[[2]]
  V1 V2
4  2  4
5  2 10 ***************************
6  2  6
> k[[1]][2,2]=10
> k
[[1]]
  V1 V2
1  1  1
2  1 10 *******************************
3  1  3

[[2]]
  V1 V2
4  2  4
5  2 10
6  2  6

	[[alternative HTML version deleted]]


