【问题标题】:Rbind multiple dataframes together将多个数据帧绑定在一起
【发布时间】:2020-05-06 14:42:06
【问题描述】:

我想将多个数据帧合并在一起。这些数据帧是来自 SQL 的数据。有时某些数据框可能是空的。

代码:

combined = rbind(df1,df2,df3,df4)

如果其中一个数据框为空,则返回编译错误。即使它是空的,我如何 rbind ?或者有没有更好的方法来处理这个问题?

【问题讨论】:

  • do.call(rbind, list(df1, df2, df3, df4))?
  • 在基础 R 中,@jay.sf 的建议当然是最好的。我发现我更喜欢(取决于我使用的库集)dplyr::bind_rowsdata.table::rbindlist(轻微的代码高尔夫,不确定对我来说是否还有更多)。

标签: r rbind


【解决方案1】:

您可以使用 do.call 并将您的数据框强制放入列表中

do.call(rbind, list(df1, df2, df3, df4))

【讨论】:

    【解决方案2】:

    data.table 提供了一个rbindlist 函数,其工作方式与do.call-rbind 组合类似(但更高效)

    library(data.table)
    rbindlist(lapply(setDT, list(df1,df2,df3,df4)))
    

    如果您的列在所有列中的顺序不同,您可以添加use.names = TRUEfill = TRUE

    【讨论】:

      【解决方案3】:

      我们可以使用bind_rows

      library(dplyr)
      bind_rows(mget(ls(pattern = '^df\\d+$'))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-01-05
        • 1970-01-01
        • 1970-01-01
        • 2021-04-28
        • 2021-09-04
        • 2014-07-31
        • 2017-05-10
        相关资源
        最近更新 更多