【发布时间】:2019-05-07 23:35:45
【问题描述】:
假设我有以下数据框和名称的字符向量:
x <- data.frame(val = 1)
y <- data.frame(val = 2)
nms <- c("x", "y")
我想简单地将数据框行绑定在一起。我可以毫无问题地使用do.call 和rbind 做到这一点:
library(dplyr)
do.call(rbind, syms(nms))
# val
#1 1
#2 2
但是,如果我尝试dplyr::bind_rows,我会收到一个奇怪的错误,告诉我参数 1 必须是数据帧事件,尽管它是一个数据帧:
bind_rows(syms(nms))
#Error: Argument 1 must be a data frame or a named atomic vector, not a data.frame
如果有人能告诉为什么会发生这种情况,我们将不胜感激。
【问题讨论】:
-
bind_rows()中的syms()需要什么?如果您尝试,bind_rows(x,y)它将起作用。另请参阅此 github issue -
没有必要,因为这个问题可以通过很多方式解决。我只是好奇为什么
bind_rows在这里失败了,因为我预计它会起作用,并且错误很神秘,traceback指向的 C 代码没有启发性。不过,看起来 github 问题(大部分)回答了我的问题,谢谢。