我有一个三级嵌套列表。我需要将中间层级的列表解构,但是我还没有找到一个简单的方法来实现。
例如:
df1 <- data.frame(X = sample(100),
Y = sample(100))
df2 <- data.frame(X = sample(50),
Y = sample(50))
df3 <- data.frame(X = sample(150),
Y = sample(150),
Z = sample(150))
df4 <- data.frame(X = sample(20),
Y = sample(20),
Z = sample(20))
list1 <- list(A = df1, B = df2)
list2 <- list(A = df3, B = df4)
masterList <- list(list1, list2)
What I want to achieve is
newMasterList <- list(A = rbind(df1,df2), B = rbind(df3,df4))
我尝试使用unlist()函数,但是无论使用哪个递归选项都不能得到期望的结果:
newMasterListFAIL1 <- lapply(seq_along(masterList), function(x) unlist(masterList[[x]], recursive = F))
newMasterListFAIL2 <- lapply(seq_along(masterList), function(x) unlist(masterList[[x]]))
lapply(masterList, function(x) do.call(rbind, x))
。该代码的作用为将masterList
列表中的每个元素应用于do.call(rbind, x)
函数,然后返回合并后的结果。 - akrunlapply(masterList, rbindlist)
或者使用data.table
包中的rbindlist
函数。较慢的方法是:lapply(masterList, function(x) Reduce(rbind, x))
。 - Colonel Beauvel