首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从我的数据框中仅选择无序因子?

如何从我的数据框中仅选择无序因子?
EN

Stack Overflow用户
提问于 2019-05-29 00:36:08
回答 2查看 110关注 0票数 2

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

我尝试使用表达式"!is.ordered“来获取没有排序的因子变量,但是抛出了一个错误。

代码语言:javascript
运行
复制
df=mtcars
df$am=as.factor(df$am)
df$carb=as.ordered(df$carb)
df2=df[,lapply(df,(is.factor & !is.ordered))]

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

这也不起作用:

代码语言:javascript
运行
复制
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)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-29 00:47:21

代码语言:javascript
运行
复制
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

从可读性的角度来看,我更喜欢base函数,但是有一个dplyr函数总是很好的。

票数 4
EN

Stack Overflow用户

发布于 2019-05-29 00:42:29

dplyr试试吧

代码语言:javascript
运行
复制
dplyr::select_if(df, ~ !is.ordered(.))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56346655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档