dplyr:选择除vector中包含的变量之外的所有变量

时间:2018-03-27 14:16:18

标签: r select dplyr

这应该是一个简单的问题,但我正在努力。

我有一个我想从数据框中排除的变量名称向量:

df <- data.frame(matrix(rexp(50), nrow = 10, ncol = 5))
names(df) <- paste0(rep("variable_", 5), 1:5)

excluded_vars <- c("variable_1", "variable_3")

我原本以为只用-排除select语句中的对象就可以了:

select(df, -excluded_vars)

但是我收到以下错误:

  

-excluded_vars中的错误:一元运算符的无效参数

使用select_()

时也是如此

有什么想法吗?

6 个答案:

答案 0 :(得分:10)

您需要使用one_of功能:

select(df, -one_of(excluded_vars))

有关selectdplyr文档中的有用功能部分,请参阅基于变量名称的更多信息。

答案 1 :(得分:1)

你可以写:

df %>% dplyr::select(colname)

有些包也有选择功能,这可能是问题所在,所以你需要提到包。

答案 2 :(得分:0)

使用select_,您只需使用setdiff

select_(df, .dots = setdiff(colnames(df), excluded_vars))

答案 3 :(得分:0)

您几乎就在那里了,只需在-c()中使用exclude_vars
像这样:

select(df, -c(excluded_vars))

答案 4 :(得分:0)

从dplyr的最新版本开始,以下内容现在有效:

select(df, -excluded_vars)

答案 5 :(得分:0)

只需简单地使用否定运算符: select(df, !c(col1, col2, col3))