假設我們有一個嵌套列表: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