【发布时间】:2016-08-15 06:00:48
【问题描述】:
我有一个包含 NULL 元素的嵌套列表,我想用其他东西替换它们。例如:
l <- list(
NULL,
1,
list(
2,
NULL,
list(
3,
NULL
)
)
)
我想用 NA 替换 NULL 元素。执行此操作的自然方法是使用rapply 递归循环列表。我试过了:
rapply(l, function(x) NA, classes = "NULL", how = "replace")
rapply(l, function(x) if(is.null(x)) NA else x, how = "replace")
不幸的是,这些方法都不起作用,因为rapply 显然忽略了NULL 元素。
如何操作嵌套列表中的NULL 元素?
【问题讨论】:
-
我终于放弃了 rapply 并使用something which I can predict how it will work 所以
rapply2(l, function(x) if (is.null(x)) NA else x)可以工作 -
这里有一个有趣的post 讨论了这个问题,但并没有完全回答你关于如何解决这个问题的问题。
-
在史蒂夫布;这是正确的。很抱歉@Owen 似乎不再在这里花太多时间了。他的帖子总是很有见地。
-
基本上每个人都想做同样的事情并重写自己的递归 lapply。恕我直言,有点负担过重;也许这应该存在于基础 R 中。
-
@rawr 我想知道你写这篇评论后是否改变了
rapply2()的行为。