【问题标题】:How to use bind_rows() and ignore column names [duplicate]如何使用 bind_rows() 并忽略列名 [重复]
【发布时间】:2018-05-16 01:52:34
【问题描述】:

这个问题以前可能已经回答过,但我似乎找不到答案。你如何使用bind_rows() 来只使用union 这两个表并忽略列名。
bind_rows() 上的文档有以下示例:

#Columns don't need to match when row-binding
bind_rows(data.frame(x = 1:3), data.frame(y = 1:4))

这将返回列 xy。如何在不更改列名的情况下只取回一列?
所需的输出,我真的不在乎列名最终是什么:

  x
1 1
2 2
3 3
4 1
5 2
6 3
7 4

【问题讨论】:

  • 您不能bind_rows 忽略列名。 ?bind_rows 文档说,"When row-binding, columns are matched by name, and any missing columns with be filled with NA."。使用bind_rows(unname(df1), unname(df2)) 会出现错误Error in bind_rows_(x, .id) : Argument 1 must have names

标签: r binding dplyr


【解决方案1】:

您可以使用快速的 2 行函数来做到这一点:

force_bind = function(df1, df2) {
    colnames(df2) = colnames(df1)
    bind_rows(df1, df2)
}
force_bind(df1, df2)

输出:

  x
1 1
2 2
3 3
4 1
5 2
6 3
7 4

【讨论】:

    【解决方案2】:

    我觉得我们这里还是需要改名字的

    bind_rows(data.frame(x = 1:3), setNames(rev(data.frame(y = 1:4)), names(data.frame(x = 1:3))))
      x
    1 1
    2 2
    3 3
    4 1
    5 2
    6 3
    7 4
    

    【讨论】:

      猜你喜欢
      • 2018-10-25
      • 1970-01-01
      • 2020-08-01
      • 1970-01-01
      • 2012-03-27
      • 2017-12-21
      • 2016-03-21
      • 1970-01-01
      • 2021-08-20
      相关资源
      最近更新 更多