on 02/12/2009 10:17 PM Marc Schwartz wrote:
> on 02/12/2009 10:07 PM Stuart Jaffe wrote:
>> Hi,
>>    I have a list of numbers (classified as a list) that contains integer(0)
>> empty vectors. How do I convert those integer(0) into NAs? Thanks
> 
> Presuming that you are referring to a list along the lines of:
> 
> L <- list(1:5, integer(0), 2:4, integer(0), integer(0), 3:7)
> 
>> L
> [[1]]
> [1] 1 2 3 4 5
> 
> [[2]]
> integer(0)
> 
> [[3]]
> [1] 2 3 4
> 
> [[4]]
> integer(0)
> 
> [[5]]
> integer(0)
> 
> [[6]]
> [1] 3 4 5 6 7
> 
> 
> 
> You could use:
> 
>> lapply(L, function(x) if (length(x) == 0)  NA else x)
> [[1]]
> [1] 1 2 3 4 5
> 
> [[2]]
> [1] NA
> 
> [[3]]
> [1] 2 3 4
> 
> [[4]]
> [1] NA
> 
> [[5]]
> [1] NA
> 
> [[6]]
> [1] 3 4 5 6 7
> 
> 
> The key is that integer(0) has length 0.

Here is one more option, setting the individual elements to NA, rather
than copying them:

  is.na(L) <- which(sapply(L, length) == 0)

See ?is.na

Also, if you wished to remove the integer(0) based elements, you can set
them to NULL:

L[which(sapply(L, length) == 0)] <- NULL

> L
[[1]]
[1] 1 2 3 4 5

[[2]]
[1] 2 3 4

[[3]]
[1] 3 4 5 6 7


Marc

______________________________________________
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