从列表中删除元素。

4

有一个R列表,其中包含子列表 - 我正在使用list[[i]]进行索引 - 这些列表中的一些是空的 - 它们只是NULL。如何删除这些并仅保留存储矩阵的列表?

list[[1]]
 [1,]   99   45
  [2,]   92   45
  [3,]   11   45
  [4,]   99   45
  [5,]   92   45
  [6,]   99    2
  [7,]   99   22
  [8,]   99    2

那没问题,但是...
list[[4]] NULL

思考

delete.NULLs  <-  function(x.list){   # delele null/empty entries in a list
    x.list[unlist(lapply(x.list, length) != 0)]
}

使用这种方法可以实现,但速度非常慢。我的列表有四千万个子列表,我认为大部分子列表中都没有数字...


请移步该网页了解如何从列表中删除空的子列表:https://dev59.com/eW_Xa4cB1Zd3GeqP0WO7 - jalapic
但这是针对NA而不是NULL的。 - heinheo
1个回答

6
您可以使用“过滤器”(Filter)。例如:
my_list <- list(A = 10, B = NULL, C = rnorm(10), D = NULL)

#remove nulls
Filter(Negate(is.null), my_list)

2
这是正确的做法 :) 我删除了我的答案,你只用了 20 秒就完成了 - Colonel Beauvel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接