递归绑定数据帧

Bind data frames recursively

我需要数据框,列数相同但行数不同。我想将一个数据框的列绑定到另一个数据框的列,但将一个数据框的列绑定到所有其他数据框,即将一个数据框的第一行绑定到第二个数据框的所有其他行,依此类推。

我试过用for循环,当然,对于大量的行,它需要很长时间。例如:

df1 <- data.frame(replicate(5,sample(0:1,5,rep=TRUE)))
df2 <- data.frame(replicate(5,sample(0:1,5,rep=TRUE)))

b1 <- data.frame()
for (i in 1:nrow(df1)) {
    for (k in 1:nrow(df2)) {
        b1 <- rbind(b1, cbind(df1[i,], df2[k,]))
    }
}

本例中b1是一个25行10列的数据框。

我尝试使用 do.call,但我得到了一对一的映射,即在这种情况下有 5 行的数据框(第一列到第一列,第二列到第二列,以及依此类推)。

有什么改进方法吗?

谢谢!

如果我对你的理解正确,这与:

ind_1 <- rep(seq_len(nrow(df1)), each = nrow(df2))
ind_2 <- rep(seq_len(nrow(df2)), nrow(df1))

cbind(df1[ind_1, ], df2[ind_2, ])