ошибка, вызванная синтаксисом макросов

Некоторые данные:

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

Я бы использовал sapply, как вы, но в сочетании с is.factor, чтобы вернуть логический вектор:

is.fact <- sapply(insurance, is.factor)
#   int fact1 fact2 fact3 
# FALSE  TRUE  TRUE  TRUE

Затем используйте [, чтобы извлечь эти столбцы:

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

Наконец, чтобы получить уровни, используйте 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"

Вы также можете найти str(insurance) интересным как краткое описание.

0
задан xmoex 22 October 2013 в 03:14
поделиться