Reordenar linhas em data.table em uma ordem específica
eu tenho umdata.table
dumdt
:
set.seed(123)
dumdt <- data.table(v1=sample(1:10, 5), v2=1:5)
cujas linhas eu gostaria de reordenar nessa ordem de índices específica (primeiro a terceira observação, depois a quinta, depois a segunda, etc.):
to_ord <- c(3, 5, 2, 1, 4)
Então eu gostariadumdt
ser o resultado dedumdt[to_ord]
mas eu também gostaria de fazer isso por referência e evitar fazerdumdt <- dumdt[to_ord]
.
Sei que posso reordenar linhas por referência comsetorder
(ousetorderv
), mas apenas de acordo com uma ou várias variáveis, em ordem crescente ou decrescente, não em uma ordem personalizada.
No entanto, se eu quisesse reordenar as colunas, não as linhas, em um pedido personalizado, eu poderia usarsetcolorder
.
Então aqui vem a minha pergunta: existe uma função que funcionaria comosetcolorder
mas com as linhas (ou uma maneira de usarsetorder
para fazer o mesmo) ?
Minha saída desejada seria algo como
setroworder(x=dumdt, neworder=to_ord)
dumdt
# v1 v2
# 1: 4 3
# 2: 6 5
# 3: 8 2
# 4: 3 1
# 5: 7 4