【问题标题】:Sorting two vectors in terms of another in R [duplicate]在R中根据另一个向量对两个向量进行排序[重复]
【发布时间】:2014-03-01 04:16:32
【问题描述】:

我有两个向量 X 和 Y。所以我想按升序对 X 进行排序,并将 X 与对应的 Y 配对。这里 X 和 Y 具有相同数量的元素。

有什么帮助吗?谢谢。

【问题讨论】:

  • 为什么sort 不起作用? Xs 和 Ys 如何“对应”?
  • 相信这个问题之前已经回答过了:stackoverflow.com/questions/1568511/…
  • 是的,我已经尝试过该链接,但对我不起作用。但是,刚刚解决了。

标签: r


【解决方案1】:

你可以使用order,例如:

X <- c(1,4,2,4,5)
Y <- c(9,3,2,3,4)
X.sorted <- X[order(X)]
Y.sorted <- Y[order(X)]

【讨论】:

  • 谢谢。效果很好。
【解决方案2】:

双胞胎的答案应该有效。一个建议(我要评论,但我的代表太低了)是,如果向量非常大,存储订单而不是计算两次可能更有效:

i = order(X)
X.sorted = X[i]
Y.sorted = Y[i]
rm(i)              #clean up

(我不确定 R 是如何缓存函数结果的,如果有的话,但即使使用 twin 的代码,R 也可能在内部执行此操作。)

听起来您可能希望这些数据向量更明确地链接,在这种情况下,将其编码并将它们作为单个数据框处理可能是一种好习惯:

d = data.frame(X=X,Y=Y)
d.sorted = d[order(d$X),]

【讨论】:

  • 我很确定 R 不会“缓存”双胞胎代码中第一个 order 调用的结果。与您的方法相反的是,制作 i 会阻止数字向量被垃圾收集,您可能希望以 rm(i) 结束。
  • 好点,已编辑。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-05
  • 1970-01-01
  • 1970-01-01
  • 2010-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多