2016-04-12 24 views
10

Questo è strano. Ottengo questo erroreErrore: x deve essere atomico per 'sort.list'

Error in sort.list(y) : 'x' must be atomic for 'sort.list'
Have you called 'sort' on a list?

quando eseguo questo codice in un elenco

cc3 <- as.data.frame(table(cc2)) 

Che cosa potrebbe essere sbagliato?

questo è un capo della lista.

head(cc2) 
V1 
1: 174 
2: 174 
3: 211 
4: 177106 
5: 177106 
6: 177106 

Edit: Quando eseguo, str(cc2) ho questa

Classes ‘data.table’ and 'data.frame': 149706 obs. of 1 variable: 
$ V1:List of 149706 
..$ : Named chr "174" 
.. ..- attr(*, "names")= chr "V11" 
..$ : Named chr "174" 
.. ..- attr(*, "names")= chr "V7" 
..$ : Named chr "211" 
    .. ..- attr(*, "names")= chr "V6" 
.. [list output truncated] 
- attr(*, ".internal.selfref")=<externalptr> 
+1

Ogni volta che vedo un errore del genere, so che o ha qualcosa a che fare con il mio non capire la struttura dei dati o non capire quale tipo di struttura dati richiede la funzione. – lmo

risposta

11

Dalla uscita del str(cc2), il variabile all'interno di data.table, V1, è di per sé una lista. Ciò significa che cc2 è un elenco annidato di lunghezza 1. L'errore si verifica perché table chiama sort.list, che richiede un vettore atomico come input.

Provare a utilizzare unlist:

cc3 <- as.data.frame(table(unlist(cc2))) 

unlist sarà (ricorsivamente) estrarre elementi dal loro contenitori lista. Quindi unlist(cc2) restituirà un vettore, che funziona direttamente con table.

5

ho risolto da unlisting CC2 unli <- unlist(cc2) poi convertito DF df<-as.data.frame(cc2)

Problemi correlati