[R] The correct way to set an element in a list to NULL? (FAQ is not clear)
Steve Lianoglou
mailinglist.honeypot at gmail.com
Fri Dec 11 18:27:02 CET 2009
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?
>
> ______________________________________________
> R-help at 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.
--
Steve Lianoglou
Graduate Student: Computational Systems Biology
| Memorial Sloan-Kettering Cancer Center
| Weill Medical College of Cornell University
Contact Info: http://cbio.mskcc.org/~lianos/contact
More information about the R-help
mailing list