Скажімо , у мене є такі data.tableв R:
library(data.table)
DT = data.table(x=rep(c("b","a","c"),each=3), y=c(1,3,6), v=1:9)
Я хочу замовити його у двох стовпцях (скажімо стовпці xта v). Я використав це:
DT[order(x,v)] # sorts first by x then by v (both in ascending order)
Але тепер я хочу сортувати його за x(у порядку зменшення) та мати такий код:
DT[order(-x)] #Error in -x : invalid argument to unary operator
Тому я думаю, що ця помилка пов’язана з тим, що class(DT$x)=character. Чи можете ви дати мені якусь пропозицію для вирішення цього питання?
Я знаю, що можу використовувати DT[order(x,decreasing=TRUE)], але хочу знати синтаксис для сортування за кількома стовпцями, використовуючи обидва способи (деякі зменшуючи, деякі збільшуючи) одночасно.
Зауважте, що якщо ви використовуєте DT[order(-y,v)]результат, це нормально, але якщо ви використовуєте DT[order(-x,v)], є помилка. Отже, моє запитання: як вирішити цю помилку?
DT[order(-x)]це не рівнозначне твердження setorder(DT, -x)тому, що setorder()насправді діє на DTтой час, коли інший цього не робить. Еквівалентними висловлюваннями будуть DT <- DT [order (-x)] setorder (DT, -x) Я дуже новачок у R, тому будь ласка, виправте, якщо я помиляюся.