可能不存在的R dplyr删除列select(-name)

plu*_*uke 4 select r dplyr

library(ggplot2)
library(dplyr)

diamonds <- diamonds %>% select(-clarity)

# this works fine
# but doing it again gives me an error
diamonds %>% select(-clarity)

Error in is_character(x) : object 'clarity' not found
Run Code Online (Sandbox Code Playgroud)

如何安全删除/取消选择?

sbh*_*bha 6

这里有一个轻微的变化,如果列名不存在,在本例中为“bad_column”,则dplyr::select_if()不会引发警告:Unknown columns:

diamonds %>% 
  select_if(!names(.) %in% c('carat', 'cut', 'bad_column'))
Run Code Online (Sandbox Code Playgroud)


tmf*_*mnk 5

你可以做:

diamonds %>% 
 select(-one_of("clarity"))
Run Code Online (Sandbox Code Playgroud)

如果不存在变量:

diamonds %>% 
 select(-one_of("clarity", "clearness"))
Run Code Online (Sandbox Code Playgroud)

它返回警告:

Warning message:
Unknown columns: `clearness` 
Run Code Online (Sandbox Code Playgroud)