我有一个关于do.call的问题,很奇怪
1.我想做什么
我试图将许多数据帧绑定到一个数据帧中,所有数据帧都在列表t3中,您可能会看到下面的图片:
2.方法
2.1一个人工作
t4< – do.call(rbind.data.frame,t3) 2.2不行 t4< – rbind.data.frame(t3) 错误消息如下:
问题
我认为如果我删除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()的优点.