为什么函数rbind.data.frame在do.call

时间:2015-07-30 08:00:08

标签: r dataframe do.call

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

1。我想做什么

我试图将许多数据帧绑定到一个数据帧中,所有数据帧都在列表t3中,您可以看到下面的图片:

list variable t3

2。方法

2.1一个人工作

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

2.2无效

t4 <- rbind.data.frame(t3)

错误信息如下:

error message

第3。问题

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

1 个答案:

答案 0 :(得分:2)

函数do.call(FUN, list)旨在接受输入函数FUN以及列表输入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()的优势。