【问题标题】:Select columns, skip if column not exist选择列,如果列不存在则跳过
【发布时间】:2018-07-22 18:15:24
【问题描述】:

我想通过选择列来制作我的数据子集,如下所示:

select(df, col1, col2, col3, col4) 

但有时我的数据集略有不同,只有 col1、col2 和 col4。

如何使用 select(),如果一列不存在,它会继续而不报错?

所以它会给出一个包含 col1、col2 和 col4 的数据集(并跳过 col3)。如果我只是运行上面的 select() 行,我会收到这个错误:

Error in overscope_eval_next(overscope, expr) : object 'col3' not found

【问题讨论】:

    标签: r select dplyr


    【解决方案1】:
    df[, names(df) %in% c('col1', 'col2', 'col3', 'col4')]
    

    【讨论】:

      【解决方案2】:

      您可以使用 dplyr 中的 one_of() select helper 并将列名作为字符串传递。它只会对不存在的列发出警告。


      library(dplyr)
      
      select(mtcars, one_of(c("mpg", "disp", "foo")))
      
      #> Warning: Unknown variables: `foo`
      
      #>                      mpg  disp
      #> Mazda RX4           21.0 160.0
      #> Mazda RX4 Wag       21.0 160.0
      #> Datsun 710          22.8 108.0
      #> Hornet 4 Drive      21.4 258.0
      #> Hornet Sportabout   18.7 360.0
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-01-01
        • 2014-10-24
        • 2017-09-20
        • 1970-01-01
        • 1970-01-01
        • 2013-06-01
        • 1970-01-01
        相关资源
        最近更新 更多