我遇到了一个问题并设法用黑客解决它,我希望能够理解这个问题并希望摆脱黑客攻击。
我尝试重新创建问题无济于事,所以这里的话就足够了。
我正在尝试rbind
R中的两个数据帧,其结果必须再次是数据帧,而不是列表。我在大多数脚本中使用rbind
,之前从未遇到过问题。
但是,今天我将rbind应用于两个数据框,比如foo
和bar
,它返回了list
foobar
。我用来解决此问题的方法是将foo
和bar
强制转换为数据帧 ,如下所示:
rbind(data.frame(foo), data.frame(bar))
这有效,但我想知道为什么在foo
和bar
都已经是data.frames时我必须明确转换它。
我的问题是什么'一般'当两个输入都是data.frames时,rbind
会返回list
个场景。
我尝试通过查看rbind(A,A)
和rbind(B,B)
来调试它。两次都返回数据帧而不是list
。那么为什么rbind(A,B)
会返回list
?
谢谢!
答案 0 :(得分:3)
如果您的某个数据框实际上是tibble,则需要使用dplyr::bind_rows()
代替rbind()
,因为dplyr::bind_rows()
专门用于处理tibbles(一般也适用于数据帧)。由于tibbles是tidyverse的发明,它不一定与rbind()
等基本函数完全兼容(我自己并不知道这种行为会在你提出之前发生)。
有关这两个功能之间差异的详细信息,以及为什么您可能希望dplyr::bind_rows()
使用rbind()
,here可以找到。