我在这里阅读了大部分类似的问题,但我仍然很难理解在 order 函数中传递参数是如何打破关系的。
R 文档中介绍的示例表明:
order(x <- c(1,1,3:1,1:4,3), y <- c(9,9:1), z <- c(2,1:9))
返回
[1] 6 5 2 1 7 4 10 8 3 9
但是,当 y 是 x 的“破坏关系”,而 z 是 y 的“破坏关系”时,这意味着什么? x 向量是:
[1] 1 1 3 2 1 1 2 3 4 3
y 向量是:
[1] 9 9 8 7 6 5 4 3 2 1
另外,如果我从第一个函数中消除 z,
order(x <- c(1,1,3:1,1:4,3), y <- c(9,9:1))
它返回:
[1] 6 5 1 2 7 4 10 8 3 9
所以我不清楚 y 向量中的数字如何与 x 中的四个 1、两个 2 和三个 3 的排序相关。我非常感谢您的帮助。谢谢!
最佳答案
让我们来看看
idx <- order(x <- c(1,1,3:1,1:4,3), y <- c(9,9:1), z <- c(2,1:9))
idx;
#[1] 6 5 2 1 7 4 10 8 3 9
首先要注意的是
x[idx]
# [1] 1 1 1 1 2 2 3 3 3 4
所以
idx
x
中的订单条目从最小值到最大值。y
中的值和 z
影响如何order
对待关系 x
.取条目
x[5] = 1
和 x[6] = 1
.既然这里有平局,order
在 y
中的相应位置查找条目,即 y[5] = 6
和 y[6] = 5
.自 y[6] < y[5]
, x
中的条目已排序 x[6] < x[5]
.如果在
y
中有平局还有,order
将在下一个向量中查找条目 z
.这发生在 x[1] = 1
和 x[2] = 2
, 其中两个 y[1] = 9
和 y[2] = 9
.这里z
打破平局,因为 z[2] = 1 < z[1] = 2
因此 x[2] < x[1]
.
关于r - order 函数如何打破 R 中的关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50284990/