R rbind dataframes returns 一个列表
R rbind dataframes returns a list
我 运行 遇到了一个问题并设法通过 hack 解决了它,我希望了解这个问题并希望摆脱 hack。
我尝试重现问题但无济于事,所以这里只能用文字说明。
我正在尝试 rbind
R 中的两个数据帧,其结果必须再次是数据帧,而不是列表。我在我的大部分脚本中使用 rbind
,之前从未遇到过问题。
然而,今天我将 rbind 应用于两个数据帧,比如 foo
和 bar
,它 return 编辑了 list
foobar
。我用来解决这个问题的技巧是强制将 foo
和 bar
再次转换为数据帧 ,如下所示:
rbind(data.frame(foo), data.frame(bar))
这行得通,但我想知道为什么当 foo
和 bar
都已经是 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。
我 运行 遇到了一个问题并设法通过 hack 解决了它,我希望了解这个问题并希望摆脱 hack。
我尝试重现问题但无济于事,所以这里只能用文字说明。
我正在尝试 rbind
R 中的两个数据帧,其结果必须再次是数据帧,而不是列表。我在我的大部分脚本中使用 rbind
,之前从未遇到过问题。
然而,今天我将 rbind 应用于两个数据帧,比如 foo
和 bar
,它 return 编辑了 list
foobar
。我用来解决这个问题的技巧是强制将 foo
和 bar
再次转换为数据帧 ,如下所示:
rbind(data.frame(foo), data.frame(bar))
这行得通,但我想知道为什么当 foo
和 bar
都已经是 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。