我想绑定来自两个不同数据帧的行,其中一个数据帧包含一列哈希值,而第二个数据帧不包含该列。
library(tidyverse)
library(openssl)
df <- data.frame(x = sha3(letters[1:3], size = 512),
y = 1:3)
df2 <- data.frame(y = 4:6)
df |>
bind_rows(df2)
尝试绑定行时,出现以下错误:
Error in `bind_rows()`:
! Can't combine `..1` <hash> and `..2` <vctrs:::common_class_fallback>.
Run `rlang::last_trace()` to see where the error occurred.
我以某种方式得到了它的来源,因为第二个数据帧不包含 x 列。但是,我预期/期望的输出是,bind_rows 仍然可以工作,只需用
NA
的 df2
填充 x 列即可。
编辑:
我通过简单地将哈希列从 df 转换回字符创建了一个小解决方法,但我仍然很好奇是否可以首先防止错误。
我建议使用
rbind.fill
:
plyr::rbind.fill(df, df2)