【发布时间】:2021-08-10 13:49:33
【问题描述】:
我正在寻找一种更优雅或更高效的解决方案,将多个数据框列表附加到一个列表中。为简单起见,假设我们处理以下情况:
my_func <- function(i) {
# function to generate a list with two data frames
head(cars, i * 5) -> df1
head(iris, i * 5) -> df2
return(list(df1, df2))
}
假设我们要执行函数my_func 3 次,并在列表中执行rbind 的结果:
#output
Map(rbind, my_func(1), my_func(2), my_func(3)) -> out
#this would not be so elegant if we have to run the function many times.
#or
for (i in 1:3) {
if (i == 1) {
out <- my_func(i)
} else {
out <- Map(rbind, out, my_func(i))
}
}
我不是在寻找这样的东西:
do.call(rbind, lapply(1:3, function(i) my_func(i)[[1]]))
do.call(rbind, lapply(1:3, function(i) my_func(i)[[2]]))
我希望最终输出为包含附加数据帧的列表。
谢谢。
【问题讨论】:
-
这些数据框的维度都一样吗?
-
@AnoushiravanR 是的,它们的列数和名称完全相同。行数可能不同,但这应该不是问题。