2017-03-31 122 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