根据索引向量重新排序 R 中的向量

atr*_*eju 5 sorting r

我有一个元素向量,我想以新的顺序引入。顺序在索引向量中定义:

vector <- c("l","e","s","k","c","w","a","o","f","t","o","r","v")
index <- c(11,8,1,5,4,13,3,6,10,2,12,9,7)
Run Code Online (Sandbox Code Playgroud)

我想根据索引对向量重新排序,以便第一个元素转到位置 11,第二个元素转到位置 8,第三个元素转到 1 等。

我确信有一个非常简单的单行代码,但尽管使用 sort() 和 order() 已经有一段时间了,但我还没有找到解决方案。

Art*_*tem 3

答案交给阿克伦。

您可以使用子集机制,该机制允许操作方括号内的索引。order函数返回排序向量中的位置。然后使用order函数的输出对字符串进行重新排序。

vector <- c("l", "e", "s", "k", "c", "w", "a", "o", "f", "t", "o", "r", "v")
index <- c(11, 8, 1, 5, 4, 13, 3, 6, 10, 2, 12, 9, 7)

vector[order(index)]
# [1] "s" "t" "a" "c" "k" "o" "v" "e" "r" "f" "l" "o" "w"
Run Code Online (Sandbox Code Playgroud)