#r
#r
Вопрос:
Например:
x <- c('A', 'A', 'B', 'C', 'C', 'C')
x <- as.factor(x)
print(summary(x))
даст результат:
A B C
2 1 3
Теперь, если у меня есть именованный вектор:
nv <- c(A=2, B=1, C=3)
Как я могу легко сохранить x
в приведенном выше примере, не заботясь об их порядке?
Заранее спасибо.
Ответ №1:
В вашем конкретном примере вы можете использовать rep
, но будьте осторожны: это не общее решение. На самом деле, я считаю, что общее решение невозможно, потому summary
что отбрасывает информацию об исходном векторе.
x <- factor(c('A', 'A', 'B', 'C', 'C', 'C'))
xs <- summary(x)
rep(names(xs), times=xs)
[1] "A" "A" "B" "C" "C" "C"
Причина, по которой это не является общим, заключается в том, что summary
на самом деле просто дают таблицу непредвиденных обстоятельств, что приводит к потере информации о положении элементов. Например, если я возьму ваш вектор и добавлю еще несколько A
символов в конец, посмотрите, что получится:
x <- factor(c('A', 'A', 'B', 'C', 'C', 'C', 'A', 'A'))
xs <- summary(x)
rep(names(xs), times=xs)
[1] "A" "A" "A" "A" "B" "C" "C" "C"
(Теперь у вас есть отсортированный вектор со всеми правильными элементами, но не в правильном порядке.)
Комментарии:
1. Спасибо, Анфри! Возможно, я не был ясен в своем сообщении, но мне просто нужен вектор без порядка.
2. @Andrie это
unname
необходимо?3. @pete Нет, вы правы —
unname
в данном случае это лишнее. Отредактированный ответ.