2016-04-12 19 views
10

Das ist seltsam. Ich erhalte diese StörungFehler: x muss für 'sort.list' atomar sein

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

wenn ich diesen Code auf einer

Liste ausführen
cc3 <- as.data.frame(table(cc2)) 

Was möglicherweise falsch sein könnte?

Dies ist ein Kopf der Liste.

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

Edit: Wenn ich laufe, str(cc2) ich dieses

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

Jedes Mal, wenn ich einen Fehler sehe, weiß ich, dass es entweder damit zu tun hat, dass ich die Datenstruktur nicht verstehe oder nicht verstehe, welche Art von Datenstruktur die Funktion benötigt. – lmo

Antwort

11

Vom Ausgang von str(cc2) df, die Variable innerhalb der data.table, V1, ist selbst eine Liste. Dies bedeutet, dass cc2 eine verschachtelte Liste der Länge 1 ist. Der Fehler tritt auf, weil tablesort.list aufruft, was einen atomaren Vektor als Eingabe erfordert.

Try unlist mit:

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

unlist wird (rekursiv) extrahieren Elemente aus ihrer Liste Container. So wird unlist(cc2) einen Vektor zurückgeben, der direkt mit table arbeitet.

5

ich es von Entadressierung CC2 gelöst unli <- unlist(cc2) dann umgewandelt df<-as.data.frame(cc2)

Verwandte Themen