【问题标题】:Selecting with dplyr by variable name, some column names are numbers通过变量名使用 dplyr 选择,一些列名是数字
【发布时间】:2017-03-17 10:22:54
【问题描述】:

我想通过将向量参数传递给 dplyr 的 select 来选择列名:

df <- data.frame("A" = letters[1:5], "B" = letters[6:10], "2015" = rep(1, 5), check.names = F)
vars <- c("A", "2015")
select_(df, .dots = vars)
Error: Position must be between 0 and n

我认为它将2015 列解释为一个数字并失败,因为df 中只有三列。有没有办法在不将列2015 重命名为X2015 的情况下选择两列?

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    发现我可以使用one_of

    select(df, one_of(vars))
    A 2015
    a    1
    b    1
    c    1
    d    1
    e    1
    

    但可能@akrun 是正确的,我应该避免使用数字列名。

    【讨论】:

      【解决方案2】:

      是的,使用正则表达式:

      dplyr::select(df, matches("A|2015"))
      

      顺便说一句:select_ 方法将索引作为输入,也就是说,您也可以使用 vars &lt;- grep("A|2015", colnames(df))

      【讨论】:

        猜你喜欢
        • 2021-10-01
        • 2015-03-04
        • 2017-06-19
        • 2016-07-30
        • 2018-07-04
        • 2017-06-08
        • 2022-08-17
        • 1970-01-01
        • 2016-10-31
        相关资源
        最近更新 更多