【问题标题】:Bind data frames recursively递归绑定数据帧
【发布时间】:2017-03-31 12:55:50
【问题描述】:

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

我尝试使用 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 行的数据框(第一列到第一列,第二列到第二列,依此类推)。

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

谢谢!

【问题讨论】:

    标签: r cbind


    【解决方案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, ])
    

    【讨论】:

    • 是的!确切地!没想到这种方法,谢谢!
    猜你喜欢
    • 2010-12-15
    • 1970-01-01
    • 2012-03-14
    • 1970-01-01
    • 2016-03-24
    • 2014-07-31
    • 1970-01-01
    • 2021-01-30
    • 1970-01-01
    相关资源
    最近更新 更多