Das Sortieren von Zeilen in der Datentabelle in absteigender Reihenfolge nach dem Zeichenfolgenschlüssel "order (-x, v)" führt zu Fehlern in der Datentabelle 1.9.4 oder früher
Angenommen, ich habe Folgendesdata.table
imR
:
library(data.table)
DT = data.table(x=rep(c("b","a","c"),each=3), y=c(1,3,6), v=1:9)
Ich möchte es nach zwei Spalten ordnen (sprich Spaltenx
undv
). Ich habe das benutzt:
DT[order(x,v)] # sorts first by x then by v (both in ascending order)
Aber jetzt möchte ich es sortierenx
(in absteigender Reihenfolge) und haben den folgenden Code:
DT[order(-x)] #Error in -x : invalid argument to unary operator
Daher denke ich, dass dieser Fehler auf die Tatsache zurückzuführen ist, dassclass(DT$x)=character
. Könnten Sie mir einen Vorschlag machen, um dieses Problem zu lösen?
Ich weiß, dass ich es gebrauchen kannDT[order(x,decreasing=TRUE)]
, aber ich möchte wissen, dass die Syntax nach mehreren Spalten sortiert wird, wobei beide Methoden (einige absteigend, andere aufsteigend) gleichzeitig verwendet werden.
Beachten Sie, dass, wenn Sie verwendenDT[order(-y,v)]
Das Ergebnis ist in Ordnung, aber wenn Sie verwendenDT[order(-x,v)]
es gibt einen Fehler. Meine Frage lautet also: Wie kann ich diesen Fehler beheben?