如何使用 while 循环绑定多个数据帧?

How to rbind multiple dataframes with a while-loop?

我正在尝试绑定多个加载的数据集(它们都具有相同的列数,分别命名为“num”、“source”和“target”)。以防万一,我有十个数据框,名称分别是“test1”、“test2”、“test3”等等...

我认为尝试下面的解决方案(创建一个空数据框并遍历其他数据框)可以解决我的问题,但我想我在 rbind 函数的第二个参数中遗漏了一些东西。我不知道使用 paste0("test", I) 来增加变量(更改数据框的名称)的解决方案是否正确...恐怕我只是想用 rbind 数据框字符串对象(并出现错误),对吗?

test = as.data.frame(matrix(ncol = 3, nrow = 0)) %>%
  setNames(c("num", "source", "target"))
i=1
while (i < 11) {
  test = rbind(test, paste0("test", i))
  i = i + 1
}

我们需要 replicate 到 return 作为 list

out <- setNames(replicate(10, test, simplify = FALSE), 
       paste0("test", seq_len(10)))

如果已经在全局环境中创建了多个数据集,请将它们放入 listrbinddo.call

out <- do.call(rbind, mget(paste0("test", 1:10)))

如果我理解正确的话,这可能会对你有所帮助

图书馆

library(dplyr)

示例数据

list_of_df <-
  list(
  df1 = data.frame(a = "1"),
  df2 = data.frame(a = "2"),
  df3 = data.frame(a = "1"),
  df4 = data.frame(a = "2")
)

代码

bind_rows(list_of_df,.id = "dataset")

结果

  dataset a
1     df1 1
2     df2 2
3     df3 1
4     df4 2

我们可以使用名称中的通用模式绑定 test1:test10:

library(dplyr)
result <- mget(ls(pattern="^test\d+")) %>%
    bind_rows()