r - order 函数如何打破 R 中的关系?

标签 r

我在这里阅读了大部分类似的问题,但我仍然很难理解在 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] = 1x[6] = 1 .既然这里有平局,ordery 中的相应位置查找条目,即 y[5] = 6y[6] = 5 .自 y[6] < y[5] , x 中的条目已排序 x[6] < x[5] .

如果在 y 中有平局还有,order将在下一个向量中查找条目 z .这发生在 x[1] = 1x[2] = 2 , 其中两个 y[1] = 9y[2] = 9 .这里z打破平局,因为 z[2] = 1 < z[1] = 2因此 x[2] < x[1] .

关于r - order 函数如何打破 R 中的关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50284990/

相关文章:

r - 在 tidyr/dplyr 中添加零计数行的正确习惯用法

r - 使用 dplyr 的 mutate_all 条件替换

r - 即使原始字符没有毫秒,在 R 中将毫秒添加到时间戳中?

r - 如何使用 R 中的 depmixS4 包预测样本外观测值?

r - 如何生成一个新的数字列来表示 R 中的字符序列?

r - 按组计算第二高累积值

r - 之前在 Shiny 中输入的内容

将NA值替换为组值

r - 而 TRUE + 进入子环境

r - 计算每个组的 data.table 窗口中的值数量