我遇到了一个问题,并设法通过黑客解决了它,我希望了解这个问题并希望摆脱黑客。
我尝试重现这个问题,但没有成功,所以这里的文字就足够了。
我正在尝试rbind
R 中的两个数据帧,其结果必须再次是数据帧,而不是列表。我用rbind
在我的大多数脚本中,以前从未遇到过问题。
但是,今天我将 rbind 应用于两个数据帧,例如 foo
和bar
它返回了 list
foobar
。我用来解决这个问题的技巧是强制转换 foo
和bar
再次到数据帧,如下所示:
rbind(data.frame(foo), data.frame(bar))
这可行,但我想知道为什么当 foo
时我必须显式转换它和bar
已经是 data.frames。
我的问题是在什么“一般”场景下rbind
返回 list
当两个输入都是 data.frames 时?
我尝试通过查看 rbind(A,A)
来调试它和rbind(B,B)
。两次它都返回一个数据帧而不是 list
。那么为什么会rbind(A,B)
返回 list
?
谢谢!
最佳答案
如果您的数据帧之一实际上是 tibble ,则需要使用 dplyr::bind_rows()
而不是 rbind()
,因为 dplyr::bind_rows()
是专门设计用于处理 tibbles(它通常也适用于数据帧)。由于 tibbles 是 tidyverse 的一项发明,它不一定与像 rbind() 这样的基本函数完全兼容(我自己并不知道会发生这种行为,直到你提出它)。
有关这两个函数之间的差异以及为什么您可能希望使用 dplyr::bind_rows()
而不是 rbind()
的更多信息,请参阅 here 。
关于R rbind dataframes 返回一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48211010/