假设我们有一个嵌套列表:R:在嵌套列表替换值
test <- list(
list(a = 1, b = 2, c = NULL),
list(a = NULL, b = 2, c = 3))
如何更换,说所有的NULL
值,NA
保存数据的结构?所以当我试图将数据框从列表中移出时,我不会失去价值/结构。如:
data.frame(matrix(unlist(test), nrow = 2, byrow = T))
X1 X2
1 1 2
2 2 3
所需的输出是一样的东西:
X1 X2 X3
1 1 2 NA
2 NA 2 3
有建议做这种方式:
rbind.fill(lapply(test, function(f) {
as.data.frame(Filter(Negate(is.null), f))
}))
这是不太矢量,因为我想。显然,尺寸和性能是一个问题。需要考虑的一种解决方法是同时替换所有NULL值,因为它可以一次完成整个数据帧。然后是unlist()
和matrix()
的列表。
我不确定表现的收益(如果有的话)。也许好老lapply()
并不是那么糟糕。
要替换整个列表中的NULL值,我们必须访问里面的元素。使用'data.table 1.9.5',你可以在更新的代码中使用'rbindlist(lapply(....),fill = TRUE)'。 – akrun 2015-04-03 07:46:26
..这要求lapply基本结束与原来的答案相同的性能? – 2015-04-03 07:49:24
我没有检查基准,但我认为rbindlist会更快。 – akrun 2015-04-03 07:50:22