R: reverse order / unsort / switch back to original order

Suppose I have a vector

test<-c("a","b","c","d","e")

I change the order using a different index vector (this is important):

sortvect<-c(2,3,5,4,1)
test2<-test[sortvect]

After that I do some operations on test2, after which I want to return to the original order, having sortvect:

test<-give_my_order_back(test2,sortvect)

I tried test2[sortvect]and test2[rev(sortvect)], but the solution seems to be different.

+4
source share
3 answers

It is not that difficult. match(test, test2)will give you an index to reorder back.

test <- c("a","b","c","d","e")
sortvect <- c(2,3,5,4,1)
test2 <- test[sortvect]
sortback <- match(test, test2)
test2[sortback]
# [1] "a" "b" "c" "d" "e"
+5
source

Alternatively, orderit can also be done quite simply.

test2[order(sortvect)]
# [1] "a" "b" "c" "d" "e"
+4
source

dww, , order , :

test <- c("a","b","c","d","e")
sortvect <- c(2,3,5,4,1)
test2 <- test[sortvect]
test2[order(sortvect)]
[1] "a" "b" "c" "d" "e"

, :

test <- c("a","b","c","d","e")
sortvect <- c(2,3,5,4,1)
test2 <- test[sortvect]
set.seed(12)
test2 <- paste0(sample(c("a","b","c","d","e"), 5, replace = F),test2)
test2[order(sortvect)]
[1] "ba" "ab" "dc" "ed" "ce"
+2
source

Source: https://habr.com/ru/post/1656875/


All Articles