R语言如何基于一个向量的大小顺序对另一个向量匹配排序
你需要匹配两个向量的秩对应关系,正确实现方法是先对y做升序排序,再用x的秩作为索引提取值即可,核心代码如下:
sort(y)[rank(x)]
第一个示例验证
x <- c(1,5,2) y <- c(4,5,1) sort(y)[rank(x)] # 输出结果:1 5 4,完全符合预期
第二个示例验证
x <- c(1,5,7,3,4,2) y <- c(4,5,6,2,6,8) sort(y)[rank(x)] # 输出结果:2 6 8 5 6 4
这里x的最大值7位于第三个位置,对应输出y的最大值8也在第三个位置,符合需求。
实现原理
rank(x)会得到x中每个元素对应的大小排名,x中最小的元素排名为1,次小的为2,以此类推sort(y)会把y按照从小到大的顺序排列- 用x的排名作为索引从排序后的y中取值,就能保证x中第k小的位置,对应放y中第k小的值,实现二者大小顺序完全一一对应
内容的提问来源于stack exchange,提问作者Z. Zhang
相关产品推荐
相关产品推荐

