如何仅从数据框中选择无序因素?

时间:2019-05-28 16:36:08

标签: r

我找不到从数据框中仅选择名义变量(无序因子)列的简单方法。

我尝试使用表达式“!is.ordered”来捕获未排序的因子变量,但这会引发错误。

df=mtcars
df$am=as.factor(df$am)
df$carb=as.ordered(df$carb)
df2=df[,lapply(df,(is.factor & !is.ordered))]

!is.ordered错误:参数类型无效

这也不起作用:

df=mtcars
df$am=as.factor(df$am)
df$carb=as.ordered(df$carb)
df2=df[,sapply(df, is.factor)]
ords=unlist(lapply(df2,is.ordered))
df2=df2[,-ords]
names(df2)

NULL

2 个答案:

答案 0 :(得分:3)

df[,sapply(df, function(x) is.factor(x) & !is.ordered(x)), drop = FALSE]

dplyr::select_if(df, ~ !is.ordered(.) & is.factor(.)) # Extended by is.factor of utubun

从可读性的角度来看,是否更愿意使用dplyr函数,但是使用base R替代项总是很好。

答案 1 :(得分:1)

尝试使用dplyr

dplyr::select_if(df, ~ !is.ordered(.))