2012-05-01 2 views
5

Ну, решив познакомиться с некоторыми из основных функций в R, я наткнулся на функцию sort.list(). Я получаю довольно прямолинейную функцию sort(), но не получаю идею sort.list(). Я читал, что это должна быть функция перестановки, переупорядочивающая содержимое моего вектора (каким-то образом).В чем разница между sort() и sort.list() в R?

Имея вектор;

x <- c(5.0, 3.0, 2.0, 2.2, 0.0, 5.0, 3.0, 2.0, 2.2) 

Запуск sort.list(x) выходы

[1] 5 3 8 4 9 2 7 1 6 

Откуда это взялось? Может ли кто-нибудь дать мне подсказку, пожалуйста? И в чем же смысл этой перестановки?

Спасибо.

ответ

7

sort.list, как говорится в ?sort.list, такая же, как order, только вместо того, чтобы принять несколько аргументов через ..., он принимает только один атомный вектор в качестве аргумента.

Предположительно, тогда он может быть предназначен как «более быстрая» или «более простая» версия order.

Что хорошего? Рассмотрим это:

x <- c(5.0, 3.0, 2.0, 2.2, 0.0, 5.0, 3.0, 2.0, 2.2) 
> x[sort.list(x)] 
[1] 0.0 2.0 2.0 2.2 2.2 3.0 3.0 5.0 5.0 
> x[order(x)] 
[1] 0.0 2.0 2.0 2.2 2.2 3.0 3.0 5.0 5.0 

Как order возвращает перестановку, что при использовании для индексации оригинальный вектор сортирует его.

Но я также думаю, что это имя сбивает с толку.

+0

Спасибо! Я прочитал: sort.list, но не понял эту идею. Я получаю это сейчас. Думаю, я не заметил (очевидное) отношение возвращаемого значения sort.list() к позициям значения в отсортированном порядке ... – Alex

+0

@Alex Мне потребовалось некоторое время, чтобы посмотреть 'rank' , 'order' и' sort' каждый раз, когда я использовал их, прежде чем я смог бы держать это прямо в голове, что делали каждый. – joran

Смежные вопросы