2016-12-17 5 views
-1

Ich habe eine csv Datei als data.frame importiert. Wenn ich es wie folgt in data.table umwandle, indem ich die key wie folgt angeben, wird die Zeilenreihenfolge durcheinander gebracht.data.table Zeilenreihenfolge wird vermasselt

setDT(DT, head1) 

Die Zeilenreihenfolge wird jedoch nicht gestört, wenn Sie wie folgt in data.table konvertieren.

setDT(DT) 
setkey(DT, head1) 

Jetzt tun Sie Folgendes, ich bekomme eine Warnung, die besagt, dass die Zeilenreihenfolgen ungültig waren und korrigiert wurden.

setDT(DT, head1) 
setkey(DT, head1) 

Warning message: 
In setkeyv(x, cols, verbose = verbose, physical = physical) : 
    Already keyed by this key but had invalid row order, key rebuilt. 
If you didn't go under the hood please let datatable-help know so the root cause can be fixed. 

Warum passiert das?

+2

Sie werden etwas Zeit sparen, indem Sie einfach das Handbuch der Funktion, die Sie verwenden möchten, nachschlagen, besonders Beispiele. – jangorecki

Antwort

2

Sie verwenden die setDT-Funktion falsch. Das zweite Argument ist keep.rownames, nicht key. Sie müssen das Schlüsselargument nicht nur angeben, sondern auch als Zeichenfolge übergeben. Wie folgt aus:

setDT(DT, key='head1') 

Siehe ?setDT für weitere Einzelheiten.