2011-11-26 18 views
15

Estoy tratando de usar los índices de una columna ordenada de un conjunto de datos. Quiero reordenar todo el conjunto de datos por una columna ordenada.R: subíndice no válido 'lista'

area.sort<-sort(xsample$area1, index.return=TRUE)[2] 

La salida es una lista, por lo que no puedo usarla como índice en todo el conjunto de datos.

Error in xj[i] : invalid subscript type 'list' 

Alguien sugirió el uso no listados pero no puede deshacerse de la ix*. Alguna idea? Gracias

> area.sort<-unlist(area.sort) 

ix1 ix2 ix3 ix4 ix5 ix6 ix7 ix8 ix9 ix10 ix11 ix12 ix13 
    45 96 92 80 53 54 24 21 63 81 40 66 64 

Respuesta

16

Llamada a ordenar con el índice. return=TRUE devuelve una lista con dos componentes: x y ix. La indexación con [2] devuelve un subconjunto de la lista, sigue siendo una lista.

Si indiza con [[2]] debería funcionar mejor. Eso devuelve el elemento en la lista. Pero indexar usando $ ix es quizás un poco más claro.

Pero, de nuevo, si sólo necesita los índices ordenados, debe llamar order en lugar de sort ...

+4

1 por mencionar 'order', que es lo que quieren en lugar probablemente. – joran

+0

Impresionante, el orden funciona bien; y los soportes dobles funcionan bien también, gracias –