我需要数据帧,相同数量的列但不同的行数。我想将一个数据帧的列绑定到另一个数据帧的列,但是将其中一个绑定到所有其他数据帧,即,将一个数据帧的第一行绑定到第二个数据帧的所有其他行,依此类推。
我尝试使用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行的数据帧(第一列到第一列,第二列到第二列,依此类推)。
关于如何改进这个的任何想法?
谢谢!
答案 0 :(得分:1)
如果我理解正确的话,那就是:
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, ])