R rbind数据帧返回一个列表

时间:2018-01-11 15:50:57

标签: r list dataframe rbind

我遇到了一个问题并设法用黑客解决它,我希望能够理解这个问题并希望摆脱黑客攻击。

我尝试重新创建问题无济于事,所以这里的话就足够了。

我正在尝试rbind R中的两个数据帧,其结果必须再次是数据帧,而不是列表。我在大多数脚本中使用rbind,之前从未遇到过问题。

但是,今天我将rbind应用于两个数据框,比如foobar,它返回了list foobar。我用来解决此问题的方法是将foobar强制转换为数据帧 ,如下所示:

rbind(data.frame(foo), data.frame(bar))

这有效,但我想知道为什么在foobar都已经是data.frames时我必须明确转换它。

我的问题是什么'一般'当两个输入都是data.frames时,rbind会返回list个场景。

我尝试通过查看rbind(A,A)rbind(B,B)来调试它。两次都返回数据帧而不是list。那么为什么rbind(A,B)会返回list

谢谢!

1 个答案:

答案 0 :(得分:3)

如果您的某个数据框实际上是tibble,则需要使用dplyr::bind_rows()代替rbind(),因为dplyr::bind_rows()专门用于处理tibbles(一般也适用于数据帧)。由于tibbles是tidyverse的发明,它不一定与rbind()等基本函数完全兼容(我自己并不知道这种行为会在你提出之前发生)。

有关这两个功能之间差异的详细信息,以及为什么您可能希望dplyr::bind_rows()使用rbind()here可以找到。