R факторы - это векторы целых чисел, которые служат индексами для вектора символов уровней.Таким образом, внутренняя часть этого выражения создает символьный вектор.Внешняя часть преобразует набор значений: «5», «2», «4» .... и т. Д. В числовые значения.
> x<-as.factor(sample(1:5,20,replace=TRUE))
Класс хранения факторных объектов - целое число:
> dput (x)
structure(c(4L, 2L, 3L, 4L, 5L, 2L, 2L, 2L, 1L, 2L, 4L, 2L, 1L,
5L, 5L, 4L, 1L, 5L, 1L, 5L), .Label = c("1", "2", "3", "4", "5"
), class = "factor")
Функция levels () возвращает атрибут фактора .Label
, а когда фактор используется в качестве индекса, он обрабатывается как целое число:
> levels(x)[x]
[1] "4" "2" "3" "4" "5" "2" "2" "2" "1" "2" "4" "2" "1" "5" "5" "4" "1" "5" "1" "5"
Этот методпреобразования или извлечения немного быстрее, чем as.character(x)
, но, как вы уже видели, это может показаться немного загадочным, если вы не проработали то, что происходит "под капотом" (или "капот", если это так называетсяваша часть англоговорящего мира.)