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

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

1.我想做什么

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

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

2.方法

2.1一个人工作

t4< – do.call(rbind.data.frame,t3) 2.2不行 t4< – rbind.data.frame(t3) 错误消息如下: 《为什么函数rbind.data.frame在do.call中表现不同》

问题

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

最佳答案 函数do.call(FUN,list)被设计为接受输入函数FUN以及列表输入列表.它将函数应用于列表中的每个元素,然后聚合结果.

在你的电话里

t4 <- rbind.data.frame(t3)

当rbind.data.frame函数期望单个数据帧而不是t3作为输入时,您正在尝试rbind数据帧列表.

如果你愿意的话,你可以使用没有do.call的rbind.data.frame.假设列表t3中只有5个元素,那么以下内容应该有效:

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

正如您所看到的,这将很快变得乏味(而且不可读).这是使用do.call()的优点.

点赞