删除列表中的元素

hei*_*heo 4 r list dataframe

有一个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
Run Code Online (Sandbox Code Playgroud)

没关系,但是

list[[4]] NULL
Run Code Online (Sandbox Code Playgroud)

认为

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

会工作,但这很慢.我的列表有4000万个子列表,我想大多数都没有数字......

Car*_*lli 6

你可以用Filter.例如:

my_list <- list(A = 10, B = NULL, C = rnorm(10), D = NULL)

#remove nulls
Filter(Negate(is.null), my_list)
Run Code Online (Sandbox Code Playgroud)

  • 这是一个很好的方法:)我删除了我的答案,你在20秒时最快 (2认同)