【问题标题】:How to omit variables from R data.frame based on vector of names (dplyr)如何根据名称向量(dplyr)从 R data.frame 中省略变量
【发布时间】:2015-12-11 07:56:08
【问题描述】:

我有 data.frame 和一长串需要省略的变量。使用变量名向量会很方便。此外,我最好使用 dplyr 或 tidyr 来执行此操作。

我已经试过了:

df <- data.frame(A = runif(10), B = runif(10))

omits <- c("B")

df %>% select_(.dots = -omits)

但这不起作用,我得到 Invalid argument to unary operator 错误。因此,我已经知道我没有正确使用负号,但我也没有找到可行的替代方案。该示例非常简单,但我的实际问题更复杂,省略(和选择)向量更长。我真的想避免单独输入它们。

【问题讨论】:

    标签: r dataframe dplyr


    【解决方案1】:

    您可以使用one_of 选择或在这种情况下省略字符向量中提供的变量(包含在向量omits 中的变量):

    df %>% select(-one_of(omits))
    

    输出:

               A
    1  0.9930896
    2  0.4075611
    3  0.3654101
    4  0.2161043
    5  0.4034992
    6  0.8350059
    7  0.4828840
    8  0.1134290
    9  0.2902616
    10 0.4052897
    

    【讨论】:

      【解决方案2】:

      我们可以使用

       df %>% 
          select_(.dots= setdiff(names(.), omits))
      #          A
      #1  0.5479797
      #2  0.7071427
      #3  0.9020869
      #4  0.4815137
      #5  0.8413017
      #6  0.5813052
      #7  0.1528620
      #8  0.4352227
      #9  0.8802945
      #10 0.9828040
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-11-16
        • 2022-01-13
        • 2016-10-02
        • 1970-01-01
        • 2020-02-04
        • 2021-12-03
        • 2022-01-07
        相关资源
        最近更新 更多