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 Moore<damienlmo...@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.