4

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

1. 我想做什么

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

列出变量 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 时才有效?提前致谢。

4

1 回答 1

2

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

在您的通话中

t4 <- rbind.data.frame(t3)

当函数需要单个数据帧而不是作为输入时,您正在尝试rbind列出数据帧。rbind.data.framet3

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

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

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

于 2015-07-30T08:06:36.557 回答