如何选择R中的所有因子变量

Gol*_*son 10 r

我有一个名为"保险"的数据框,包含数字和因子变量.如何选择所有因子变量以便检查分类变量的级别?

我试图sapply(insurance,class)获取所有变量的类.但是后来我不能根据class(var)="factor"变量名称是否也包含在结果中来进行逻辑论证sapply().

谢谢,

flo*_*del 15

一些数据:

insurance <- data.frame(
  int   = 1:5,
  fact1 = letters[1:5],
  fact2 = factor(1:5),
  fact3 = LETTERS[3:7]
)
Run Code Online (Sandbox Code Playgroud)

我会sapply像你一样使用,但结合使用is.factor返回一个逻辑向量:

is.fact <- sapply(insurance, is.factor)
#   int fact1 fact2 fact3 
# FALSE  TRUE  TRUE  TRUE
Run Code Online (Sandbox Code Playgroud)

然后使用[提取这些列:

factors.df <- insurance[, is.fact]
#   fact1 fact2 fact3
# 1     a     1     C
# 2     b     2     D
# 3     c     3     E
# 4     d     4     F
# 5     e     5     G
Run Code Online (Sandbox Code Playgroud)

最后,要获得级别,请使用lapply:

lapply(factors.df, levels)
# $fact1
# [1] "a" "b" "c" "d" "e"
# 
# $fact2
# [1] "1" "2" "3" "4" "5"
# 
# $fact3
# [1] "C" "D" "E" "F" "G"
Run Code Online (Sandbox Code Playgroud)

您可能还会发现str(insurance)有趣的简短摘要.