为什么函数 rbind.data.frame 在 do.call 中表现不同

why function rbind.data.frame behave different in do.call

我有一个关于 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 时有效?提前致谢。

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

在你的电话中

t4 <- rbind.data.frame(t3)

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

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

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

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

的好处