【问题标题】:R: how to smartbind multiple dataframes in a simpler way?R:如何以更简单的方式智能绑定多个数据帧?
【发布时间】:2015-11-03 23:25:44
【问题描述】:

我想使用 smartbind() 来合并 20 多个数据帧。 这些数据框具有不同数量的观察值(行)。他们的大多数列具有相同的名称,但有些不同。我这样命名它们:

data.Argentina  
data.Brazil  
data.Venezuela

然后,我写了

library(gtools)
combined.data  <- smartbind(mget(ls(pattern = "^data.")))

错误信息是:

data.frame(data.Argentina = list(pais = c(1L, 1L, 1L, 1L, 1L, :参数暗示不同的行数:1512、3429、1533、3067、 1500、1571、1510、1537、1520、1489、1507、1557、1561、1503、1535、 1546、1508、4000、4203

然后,我必须手动列出所有数据框

combined.data <- smartbind (data.Argentina, data.Brazil, data.Venezuela)

这次成功了!

那么我可以使用其他功能或其他命令来简化流程吗?

谢谢!

【问题讨论】:

  • 你从哪里得到你的smartbind函数?请务必包含您可能正在使用的非默认 R 包。此外,如果您提供 reproducible example 会有所帮助。
  • 它来自 gtools。我希望提供一个例子,但我的数据太大而无法上传。
  • 你当然可以提供一个假数据的例子,然后重现你的问题,不是吗?

标签: r dataframe


【解决方案1】:

在列表中传递一堆参数与单独传递它们不同。 do.call 命令可以将列表扩展为不同的参数。试试

combined.data <- do.call("smartbind", mget(ls(pattern = "^data.")))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 2021-12-25
    相关资源
    最近更新 更多