【发布时间】:2021-12-27 13:39:17
【问题描述】:
我想使用 tidyverse 的 select_if 选择所有非数字变量。
我试过了:
mydata.dataframe %>%
select_if(!is.numeric)
但我有一条错误消息。 请问正确的做法是什么。
【问题讨论】:
我想使用 tidyverse 的 select_if 选择所有非数字变量。
我试过了:
mydata.dataframe %>%
select_if(!is.numeric)
但我有一条错误消息。 请问正确的做法是什么。
【问题讨论】:
函数(x)的另一种简写方式
mydata.dataframe %>%
select(where( ~ !is.numeric(.x)))
【讨论】:
is.numeric 是一个函数。相比之下,! 否定 逻辑值。将! 应用于函数是没有意义的。您需要调用该函数并将其结果取反。
通常你会做以下事情:
select_if(function (x) ! is.numeric(x))
或者,使用 tidyeval 的 lambda 表示法:
select_if(~ ! is.numeric(.x))
但是 R 有一个函数工厂来否定函数的结果:
select_if(Negate(is.numeric))
【讨论】: