2017-03-31 82 views
0

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

我尝试了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行的数据帧(第一列到第一列,第二列到第二列等等) 。

有关如何改进这一点的任何想法?

谢谢!

回答

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, ]) 
+0

是的!究竟!没有想到这种方法,谢谢! – Andres