【问题标题】:Reorder vector in R according to index vector根据索引向量对R中的向量重新排序
【发布时间】:2018-06-21 00:41:16
【问题描述】:

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

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)

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

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

【问题讨论】:

  • 试试vector[order(index)]
  • 谢谢你,我现在觉得很傻。 ;)
  • @atreju 您的问题仍然出现在未回答的问题列表中。这使所有试图帮助的人浪费时间。你能回答并接受吗?

标签: r sorting


【解决方案1】:

答案转到 akrun。

您可以使用子集机制,它允许在方括号内操作索引。 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"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-24
    • 2021-09-22
    • 2016-03-06
    • 2014-11-13
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    • 2019-12-14
    相关资源
    最近更新 更多