【发布时间】:2019-03-10 02:35:11
【问题描述】:
我有一些看起来像这样的东西:
Group1 <- list(Date=c("a","b","c"), Name=c("a2","b2"), Age=c("a3","b3","c3","d3"))
Group2 <- list(Date=c("a","b","c"), Name=c("a2","b2","b3"), Age=c("a3","b3","c3","d3"))
Group3 <- list(Date=c("a","b","c"), Name=c("a2","b2"), Age=c("a3","b3"))
all <- list(Group1,Group2,Group3)
all
我需要添加 NA,以便日期、姓名和年龄的每个列表长度相等。然后我需要将其转换为数据框。
我不知道如何添加 NA,因为我在列表中有列表。我将有超过 1,000 个“组”,其中包含数据列表(始终相同的日期、姓名、年龄类别,所以这个长度不会改变)。对于当前示例,这些组中最长的列表应始终为 4,因此任何更少的列表都应具有 NA。我见过这样的代码,它很接近,但不适用于列表中的列表:
## Compute maximum length
max.length <- max(sapply(all, length))
## Add NA values to list elements
l <- lapply(all, function(v) { c(v, rep(NA, max.length-length(v)))})
我可以为我当前的数据集做类似的事情吗?
【问题讨论】:
-
我认为 dplyr 包有一个
rbindlist函数可以处理这个问题。
标签: r na nested-lists