0

我有一个包含两个子列表组的列表。问题是一些子列表是 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})
4

1 回答 1

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)
          }
       })
于 2013-09-04T16:11:43.213 回答