R 中的循环中的 rbind

rbind in a loop in R

我有 n data.frame,我想将其与声誉结合,我选择了其中的两个。

假设我有三个 data.frame,名为 data1data2data3。我想将它们与 rbind 结合起来,所以我有:data1data2data1data3data2data1data2data3data3data1data3data2.

而不是写作:

data1data2 <- rbind(data1, data2)
...
data3data2 <- rbind(data3, data2)

有没有一种方法可以用 R 中的循环来做到这一点?

此代码将构建数据帧的所有组合rbind一次 2 个。

for (i in 1:n) {
 for (j in 1:i) {
  if(i==j) { next }
  df_first = paste0("data",i)
  df_second = paste0("data",j)
  expr_rbind = paste0("rbind(",df_first,",",df_second,")")
  expr_store_as = paste0(df_first,df_second)
  expr_final = paste0(expr_store_as," = ",expr_rbind)
  eval(parse(text=expr_final))
 }
}

要获得排列而不是组合,请将内循环中 j 的循环从 1 到 n 更改为 1 到 i

你可以这样做:

data1 <- BOD; data1$demand <- data1$demand +100
data2 <- BOD; data2$demand <- data2$demand +200
data3 <- BOD; data3$demand <- data3$demand +300
L <- list(data1, data2, data3)

combn(L, 2, simplify = FALSE, FUN=function(x) list(rbind(x[[1]], x[[2]]), rbind(x[[2]], x[[1]])))

或(展平列表):

R <- combn(L, 2, simplify = FALSE, FUN=function(x) list(rbind(x[[1]], x[[2]]), rbind(x[[2]], x[[1]])))
do.call(c, R)