如何以最简方式获取R语言中多水平因子的名称?
获取数据框中多水平因子的名称(最短实现方式)
示例数据
mtcars <- mtcars # 创建单水平因子 mtcars$vs <- 1 mtcars$vs <- as.factor(mtcars$vs) # 创建双水平因子 mtcars$am <- as.factor(mtcars$am)
需求
提取数据框中所有具有多个水平的因子的名称,预期结果为仅包含"am"的字符向量。
最短实现代码
names_of_factors_with_more_lvls <- names(mtcars)[sapply(mtcars, \(x) is.factor(x) && nlevels(x) > 1)]
代码说明
- 用
sapply遍历数据框的每一列,通过匿名函数\(x)判断当前列是否为因子类型且水平数大于1,返回一个逻辑向量。 - 借助这个逻辑向量从
names(mtcars)中筛选出符合条件的列名。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

