Почему вывод не упорядочен по алфавиту, когда я использую factor () без установки уровней? - PullRequest
1 голос
/ 31 марта 2020

Это мой код:

library(tidyverse)
x <- c("Jan","Aug", "Feb")
sort(x)
#> [1] "Aug" "Feb" "Jan"
factor(x)
#> [1] Jan Aug Feb
#> Levels: Aug Feb Jan

Я знаю, что функция сортировки упорядочит x по алфавиту. И я думаю, что если я просто делю множитель (x), но не пропускаю в него какие-либо уровни, он все равно упорядочит x по алфавиту (способ по умолчанию). Но это результаты, как показано в коде выше. Я имею в виду, почему результат не упорядочен по алфавиту? Большое спасибо заранее!

1 Ответ

1 голос
/ 31 марта 2020

Нет, levels и порядок печати factor s не имеют никакого отношения. factor не меняет порядок вектора. levels из factors обычно в алфавитном порядке, если они не указаны явно. См., Например,

let <- letters[1:10]
factor(let)
#[1] a b c d e f g h i j
#Levels: a b c d e f g h i j

Установка уровней, явно меняющих уровни.

factor(let, levels = rev(let))
# [1] a b c d e f g h i j
#Levels: j i h g f e d c b a

Назначение случайных уровней.

set.seed(123)
factor(let, levels = sample(let))
#[1] a b c d e f g h i j
#Levels: c j b h f i a g e d

Как мы видим во всех случаях, levels различны, но независимо от levels способ печати факторов не меняется потому что factor не меняйте порядок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...