On Thu, Dec 10, 2009 at 10:00 PM, Marc Schwartz <marc_schwa...@me.com> wrote:
> On Dec 10, 2009, at 9:44 PM, Peng Yu wrote:
>
>> The following code returns a list with the 2nd element as NULL. I'm
>> wondering what the best way to get rid of NULL element in an
>> 'apply()'s result.
>>
>>> lapply(1:3, function(x) {
>>
>> +       if(x==2) {
>> +         return(NULL)
>> +       } else {
>> +         return(x)
>> +       }
>> +     }
>> +     )
>> [[1]]
>> [1] 1
>>
>> [[2]]
>> NULL
>>
>> [[3]]
>> [1] 3
>
>
> L <- list(1, NULL, 3)
>
>> L
> [[1]]
> [1] 1
>
> [[2]]
> NULL
>
> [[3]]
> [1] 3
>
>
> L[[2]] <- NULL
>
>> L
> [[1]]
> [1] 1
>
> [[2]]
> [1] 3
>
>
> The above is actually covered in the first R FAQ:
>
> http://cran.r-project.org/doc/FAQ/R-FAQ.html#How-can-I-set-components-of-a-list-to-NULL_003f

Is there a version of apply that returns a list without NULL's?

I try to remove NULL elements in the following example, but neither
for loops work. Would you please let me know what the correct way is?

x=list(a=1:3,b=NULL,c=2:5,d=NULL)
x
for(i in seq(along=x)) {
  if(length(x[[i]])==0) {
    x[[i]]=NULL
  }
}

for(i in seq(along=x)) {
  if(x[[i]]==NULL) {
    x[[i]]=NULL
  }
}

______________________________________________
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.

Reply via email to