我需要选择所有非数字的列.我可以使用select_if
以下方法轻松选择所有数字列
mtcars %>% select_if(is.numeric)
Run Code Online (Sandbox Code Playgroud)
如果我想选择non-numeric
列怎么办?我试过了:
mtcars %>% select_if(!is.numeric)
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误消息:
Error in !is.numeric : invalid argument type
Run Code Online (Sandbox Code Playgroud)
非常感谢您的帮助!
MrF*_*ick 24
您可以使用purrr
的negate()
,如果你使用的是包含library(tidyverse)
而不是只library(dplyr)
library(tidyverse)
iris %>% select_if(negate(is.numeric))
Run Code Online (Sandbox Code Playgroud)
如果你有一个合理的最新版本的dplyr,你可以使用purrr风格的匿名函数:
library(dplyr)
iris %>% select_if(~!is.numeric(.x)) %>% head()
#> Species
#> 1 setosa
#> 2 setosa
#> 3 setosa
#> 4 setosa
#> 5 setosa
#> 6 setosa
Run Code Online (Sandbox Code Playgroud)
或旧式funs
符号仍然有效,例如
iris %>% select_if(funs(!is.numeric(.))) %>% head()
#> Species
#> 1 setosa
#> 2 setosa
#> 3 setosa
#> 4 setosa
#> 5 setosa
#> 6 setosa
Run Code Online (Sandbox Code Playgroud)