r中的循环r

时间:2018-04-25 09:56:17

标签: r loops rbind

我有n data.frame,我希望与声誉相结合,我选择其中2个。

假设我有三个名为data1data2data3的data.frame。我想将它们与rbind结合使用,因此我得到:data1data2data1data3data2data1data2data3data3data1和{{1} }。

而不是写作:

data3data2

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

你可以这样做:

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)