R rbind dataframes returns 一个列表

R rbind dataframes returns a list

我 运行 遇到了一个问题并设法通过 hack 解决了它,我希望了解这个问题并希望摆脱 hack。

我尝试重现问题但无济于事,所以这里只能用文字说明。

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

然而,今天我将 rbind 应用于两个数据帧,比如 foobar,它 return 编辑了 list foobar。我用来解决这个问题的技巧是强制将 foobar 再次转换为数据帧 ,如下所示:

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

这行得通,但我想知道为什么当 foobar 都已经是 data.frames 时我必须显式转换它。

我的问题是,当两个输入都是 data.frames 时,在什么 'general' 场景中 rbind return 会 list

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

谢谢!

如果您的数据框之一实际上是 tibble, you'll need to use dplyr::bind_rows() 而不是 rbind(),因为 dplyr::bind_rows() 是专门为处理小标题而设计的(它通常也适用于数据框).由于 tibbles 是 tidyverse 的一项发明,因此它不一定与 rbind() 等基本函数完全兼容(在您提出它之前,我自己并不知道会发生这种行为)。

有关这两个函数之间的差异以及您可能希望使用 dplyr::bind_rows() 而不是 rbind() 的更多信息,请参见 here