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?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage