代码之家  ›  专栏  ›  技术社区  ›  dave-edison

dplyr::bind_rows(…)vs.do。调用(rbind,…)获取符号列表

  •  0
  • dave-edison  · 技术社区  · 7 年前

    假设我有以下数据帧和名称的字符向量:

    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
    

    如果有人能告诉我,我将不胜感激 为什么? 这种情况会发生。

    0 回复  |  直到 7 年前
        1
  •  0
  •   akrun    7 年前

    我们可以使用 mget list 然后做 bind_rows

    library(dplyr)
    mget(nms) %>%
       bind_rows
    #  val
    #1   1
    #2   2