删除包含NULL值的列表对象

时间:2015-08-02 15:56:37

标签: r

我下面有一个列表对象,其中包含几个NULL值。现在我想删除它们并列出没有这些值的列表,但我无法确定正确的语法。

现在据我所知,一个lapply循环不起作用,我似乎无法进入各自的索引列表索引号,我尝试foo[[!is.null(foo)]] <- NULL但这给了我列表对象虽然它包含在其中的NULL值,foo[[]][!is.null(foo)] <- NULL也不起作用。

列出对象

   Length Class      Mode
0    0     -none-     NULL
10  29     data.frame list
20  29     data.frame list
30  29     data.frame list
40  29     data.frame list
50  29     data.frame list
60  29     data.frame list
70  29     data.frame list
80  29     data.frame list
90  29     data.frame list
100 29     data.frame list
110 29     data.frame list
120 29     data.frame list
130 29     data.frame list
140 29     data.frame list
150  0     -none-     NULL
160  0     -none-     NULL
170  0     -none-     NULL
180  0     -none-     NULL
190  0     -none-     NULL
200  0     -none-     NULL
210  0     -none-     NULL
220  0     -none-     NULL
230  0     -none-     NULL
250  0     -none-     NULL
260  0     -none-     NULL
270  0     -none-     NULL
280  0     -none-     NULL
300  0     -none-     NULL
330  0     -none-     NULL

1 个答案:

答案 0 :(得分:4)

您可以使用Filter删除NULL列表元素

  Filter(Negate(is.null), lst)

数据

 lst <- list(data.frame(1:5, 6:10), NULL, NULL, data.frame(1:10))