On Fri, Dec 11, 2009 at 11:27 AM, Steve Lianoglou <mailinglist.honey...@gmail.com> wrote: > Hi, > > On Dec 11, 2009, at 12:07 PM, Peng Yu wrote: > >> http://cran.r-project.org/doc/FAQ/R-FAQ.html#How-can-I-set-components-of-a-list-to-NULL_003f >> >> The explanation on this FAQ entry is not clear. It says '... similarly >> for named components...'. What I understood was x[i]<-list(NULL) is >> the same as x$a_name<-list(NULL). But, they are not. > > You're right, x[i] is not the same as x$a_name: > > R> x <- list(a=1:3, b='hello') > R> identical(x[1], x$a) > [1] FALSE > > R> identical(x[1], x['a']) > [1] TRUE > > I think that's what it means by "similarly for named components." You see, > x$a_name is really x[[1]], which does the destructive-null-assignment-thing: > > R> identical(x[[1]], x$a) > [1] TRUE > > -steve > > >> As the example >> below shows, x$a_name<-list(NULL) is the same as x[[i]]<-list(NULL). >> >>> x=list(a=1:3,b=NULL,c=2:5,d=NULL) >>> x >> $a >> [1] 1 2 3 >> >> $b >> NULL >> >> $c >> [1] 2 3 4 5 >> >> $d >> NULL >> >>> x[[3]]=list(NULL) >>> x >> $a >> [1] 1 2 3 >> >> $b >> NULL >> >> $c >> $c[[1]] >> NULL >> >> >> $d >> NULL >> >>> x$c=list(NULL) >>> x >> $a >> [1] 1 2 3 >> >> $b >> NULL >> >> $c >> $c[[1]] >> NULL >> >> >> $d >> NULL >> >>> >>> x[[3]]=7:8 >>> x >> $a >> [1] 1 2 3 >> >> $b >> NULL >> >> $c >> [1] 7 8 >> >> $d >> NULL >> >>> x$c=7:8 >>> x >> $a >> [1] 1 2 3 >> >> $b >> NULL >> >> $c >> [1] 7 8 >> >> $d >> NULL >> >> >> What seems confusing to me is: >> even 'x[i]<-list(NULL)' and 'x[[i]]<-list(NULL)' are different, why >> x[i]<-NULL and x[[i]]<-NULL are the same? >> >> Shouldn't the meaning of 'x[[i]]<-NULL' be defined as the set the i'th >> element NULL, rather than deleting the i'th element?
Do you have any comments on the above question? ______________________________________________ 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.