【问题标题】:why function rbind.data.frame behave different in do.call为什么函数 rbind.data.frame 在 do.call 中表现不同
【发布时间】:2015-07-30 08:00:07
【问题描述】:

我有一个关于do.call的问题,很奇怪

1.我想做什么

我正在尝试将多个数据帧绑定到一个数据帧中,所有数据帧都在一个列表 t3 中,您可能会看到下图:

2。方法

2.1 一个有效的

t4 <- do.call(rbind.data.frame, t3)

2.2 不起作用

t4 <- rbind.data.frame(t3)

错误信息如下:

3.问题

我认为如果我删除 do.call,rbind.data.frame 的行为会相同,为什么它只在我使用 do.call 时才有效?提前致谢。

【问题讨论】:

    标签: r dataframe do.call


    【解决方案1】:

    函数do.call(FUN, list) 旨在接受输入函数FUN 以及列表 输入list。它将函数应用于列表中的每个元素,然后聚合结果。

    在您的电话中

    t4 <- rbind.data.frame(t3)
    

    rbind.data.frame 函数需要一个单个 数据帧而不是t3 作为输入时,您正试图rbind 一个数据帧列表。

    如果你愿意,你可以使用 rbind.data.frame 而不使用 do.call。假设您在列表 t3 中只有 5 个元素,那么以下应该可以工作:

    t4 <- rbind.data.frame(t3[[1]], t3[[2]], t3[[3]], t3[[4]], t3[[5]])
    

    如您所见,这很快就会变得乏味(而且不可读)。这就是使用do.call()的优势。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-10
      • 2014-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多