Hi Damien,
This is because of a small bug. You can work around it by explicitly
using the force function - dlply(d, V1, force). The default will be
fixed in the next version.
Regards,
Hadley
On Tue, Jul 21, 2009 at 11:18 AM, Damien Mooredamienlmo...@gmail.com wrote:
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]]
__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
--
http://had.co.nz/
__
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.