Poziomy ustawień podczas tworzenia czynnika vs. `poziomy () <-`

Najpierw stwórzmy kilka czynników:

F1 <- factor(c(1,2,20,10,25,3))
F2 <- factor(paste0(F1, " years"))
F3 <- F2
levels(F3) <- paste0(sort(F1), " years")
F4 <- factor(paste0(F1, " years"), levels=paste0(sort(F1), " years"))

potem spójrz na nie:

> F1
[1] 1  2  20 10 25 3 
Levels: 1 2 3 10 20 25

> F2
[1] 1 years  2 years  20 years 10 years 25 years 3 years 
Levels: 1 years 10 years 2 years 20 years 25 years 3 years

> F3
[1] 1 years  3 years  10 years 2 years  20 years 25 years
Levels: 1 years 2 years 3 years 10 years 20 years 25 years

> F4
[1] 1 years  2 years  20 years 10 years 25 years 3 years 
Levels: 1 years 2 years 3 years 10 years 20 years 25 years

Najpierw zauważam, że „oczekiwana” kolejność poziomów w F2 nie jest podobna do F1. Spojrzenie nafactor dokumentacja wyjaśnia, dlaczego: poziomy są tworzone przez pierwsze sortowanie danych wejściowych. W przypadku F2 są to łańcuchy, których sortowanie uwzględnia długość (?).

Trudniej jest mi zrozumieć różnicę w ustawianiu poziomów pomiędzy F3 i F4. W F3 ustawiam poziomy po utworzeniu czynnika, podczas gdy w F4 ustawiam je jawnie podczas tworzenia czynnika. W F3 użycie poziomów () <- nie jest wyłącznie relabelem poziomów, ale nie zmienia ich kolejności tak, jak oczekiwałem.

Czy ktoś może wyjaśnić różnicę?

questionAnswers(2)

yourAnswerToTheQuestion