Предположим, нам задан вектор foo
, и мы должны временно переставить его (сортировать или переупорядочивать), вычислить некоторый вектор bar
на его основе и, наконец, переставить назад foo
и bar
в исходный порядок foo
- это означает обратную перестановку:
foo <- c(1, 7, 3, 5, 2)
o <- order(foo)
foo <- foo[o] # Now foo is permuted, and sorted: foo == 1 2 3 5 7
bar = 2 * foo # bar == 2 4 6 10 14
И здесь должен идти ваш ответ, так что у нас есть следующие требуемые конечные значения:
foo == 1 7 3 5 2
bar == 2 14 6 10 4
Как это сделать?
Пожалуйста, просто не отвечайте: "вы могли бы сделать bar = 2 * foo
и не переставлять его". Это простой пример. В некоторых ситуациях нам нужно сортировать foo
для эффективности (быстрый поиск по нему) или что-то в этом роде.