我有一个包含不同数据帧的列表。列表中的每个第 n 个数据帧都具有相同的结构。该列表有点像这样:
my_list <- list(list(data.frame(a= rnorm(10), b= rnorm(10)),
data.frame(abc= letters[1:10])),
list(data.frame(a= rnorm(10), b= rnorm(10)),
data.frame(abc= letters[11:20])))
我想rbind.data.frame
每个列表的第一个数据帧和每个列表的第二个数据帧。因此,我的预期结果是:
list(rbind.data.frame(my_list[[1]][[1]], my_list[[2]][[1]]),
rbind.data.frame(my_list[[1]][[2]], my_list[[2]][[2]]))
在此示例中,每个列表有两个数据帧,但在我的情况下,数据帧的数量可以在下次运行代码时发生变化。所以我需要一个绑定(bind)每个第 n 个列表的通用解决方案。我怎样才能用base R 做到这一点?它必须是基础 R。
最佳答案
选择您感兴趣的元素,例如
lapply(my_list, `[[`, 1)
第一个数据帧。然后使用do.call()
来rbind
选定的data.frames列表
do.call(rbind, lapply(my_list, `[[`, 1))
使用提取任何列表元素i
的函数来概括这一点
FUN <- function(x, i)
do.call(rbind, lapply(x, `[[`, i))
并使用lapply()
生成您感兴趣的多个data.frames
lapply(1:2, FUN, x = my_list)
关于r - 如何使用基本 R 绑定(bind)列表中的每个第 n 个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69900765/