我找不到从数据框中仅选择名义变量(无序因子)列的简单方法。
我尝试使用表达式“!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
答案 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(.))