Ho un data.table
dumdt
:righe Riordinare in data.table in un ordine specifico
set.seed(123)
dumdt <- data.table(v1=sample(1:10, 5), v2=1:5)
cui righe desidero riordinare in questa specifica indici ordinare (quindi prima della terza osservazione, poi il quinto, poi la seconda, ecc):
to_ord <- c(3, 5, 2, 1, 4)
così mi piacerebbe dumdt
ad essere il risultato di dumdt[to_ord]
ma mi piacerebbe anche fare da riferimento e evitare di fare dumdt <- dumdt[to_ord]
.
So che posso riordinare le righe per riferimento con setorder
(o setorderv
) ma solo in base a una o più variabili, in ordine crescente o decrescente, non in un ordine personalizzato.
Tuttavia, se volessi riordinare le colonne, non le righe, in un ordine personalizzato, potrei usare setcolorder
.
Quindi, ecco la mia domanda: c'è una funzione che potrebbe funzionare come setcolorder
ma con le righe (o un modo di utilizzare setorder
per fare lo stesso)?
mio output desiderato sarebbe qualcosa di simile
setroworder(x=dumdt, neworder=to_ord)
dumdt
# v1 v2
# 1: 4 3
# 2: 6 5
# 3: 8 2
# 4: 3 1
# 5: 7 4
Non è 'setorder (cbind (dumdt, to_ord), to_ord)' (quindi impostare to_ord su NULL) abbastanza veloce? –
@EricLecoutre Grazie per il tuo commento, non sono sicuro che l'uso di 'cbind' sarà efficiente, ma in ogni caso, questo cambierebbe l'output non assegnato di' cbind' e non l'oggetto iniziale, quindi non sarebbe di grande aiuto. (e in realtà sono abbastanza convinto che l'uscita non sarebbe quella prevista ...) – Cath
Yeks ... Infatti. Sempre qualche difficoltà con i riferimenti ... –