2012-05-01 26 views
5

Bene, avendo deciso di conoscere alcune delle funzioni di base in R, mi sono imbattuto nella funzione sort.list(). Ottengo la semplice funzione sort(), ma non mi viene in mente l'sort.list(). Ho letto che dovrebbe essere una funzione di permutazione che riorganizza il contenuto del mio vettore (in qualche modo).Qual è la differenza tra sort() e sort.list() in R?

Avere il vettore;

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

corso sort.list(x) uscite

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

Da dove viene? Qualcuno può darmi un suggerimento, per favore? E a che serve comunque questa permutazione?

Grazie.

risposta

7

sort.list, come si dice in ?sort.list, è lo stesso order, solo che invece di accettare più argomenti via ..., accetta un solo vettore atomico come argomento.

Presumibilmente, quindi, potrebbe essere inteso come una versione "più veloce" o "più semplice" di order.

A che serve? Considerate questo:

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 

Proprio come order restituisce una permutazione che quando viene utilizzato per indicizzare il vettore originale lo ordina.

Ma penso anche che il nome sia confuso.

+0

Grazie! Ho letto? Sort.list, ma non sono riuscito a coglierne l'idea. Lo capisco adesso. Indovina che non ho capito la (ovvia) relazione del valore di ritorno di sort.list() alle posizioni del valore in ordine ... – Alex

+0

@Alex Mi ci è voluto un bel po 'di tempo per cercare 'rank' , 'order' e' sort' ogni volta che li usavo prima che potessi tenere dritto in testa quello che ognuno faceva. – joran

Problemi correlati