从具有可变数量的元素和NAs R的列表列表中提取元素

时间:2013-09-04 15:25:55

标签: r list sublist

我有一个包含两个子列表组的列表。问题是一些子列表是NA,而那些不包含可变数量元素的子列表。如何从第二个子列表中提取元素(具有可变数量元素的元素)?

以下是我正在尝试的内容:

x <- c('a','b','c')
mytestlist <- list()
for (i in 1:10) {mytestlist[[i]] <- list(cat=sample(x,1),nums=rnorm(sample(c(1,2,3),1)))}
ind <- sample(1:10,3)
for (i in ind) {mytestlist[[i]] <- NA}
z <- lapply(mytestlist,function(x) {if (is.na(mytestlist[[x]])) c(a=0,b=1,c=0) else mytestlist[[x]]$nums})

1 个答案:

答案 0 :(得分:0)

所以这可以标记为已回答:

SimonO101的解决方案(检查NA值):

lapply(mytestlist, 
       function(x) { 
          if( all(is.na(x)) ){ 
               c(a=0,b=1,c=0) 
          } else { 
               x$nums 
          } 
       }) 

我的解决方案(检查命名列表元素):

lapply(mytestlist, 
       function(x) {
          if('nums' %in% names(x)) {
             x$nums
          } else {
             c(a=0, b=1, c=0)
          }
       })