"订单"的输出对我来说没有意义

LGT*_*der 3 r

无论出于何种原因,我无法理解函数"订单"实际上在做什么.在下面的代码中,我展示了一些数据,什么顺序返回,然后我天真地想到的顺序应该返回但不会.对我而言,似乎列3,4,5,6和7是不正确的,但我怀疑这只是订单的文档没有通过我的愚蠢的头.

x1 = c(1,1,3:1,1:4,3)
Ordered = order(x1)
MarkThinks = c(1,2,7,5,3,4,6,8,10,9)
Res1 = rbind(x1, Ordered, MarkThinks)

Res1
Run Code Online (Sandbox Code Playgroud)

在这里运行我得到:

> Res1
           [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
x1            1    1    3    2    1    1    2    3    4     3
Ordered       1    2    5    6    4    7    3    8   10     9
MarkThinks    1    2    7    5    3    4    6    8   10     9
Run Code Online (Sandbox Code Playgroud)

在我看来,排序意味着第1行中的4个1将在其位置产生1,2,3,4,其次是2个2产生5,6,3个3的7,8,9和1 4产生10在我的申请中,如何打破关系并不重要,所以我只是从左到右,但任何关系的顺序都是可以接受的.

假设订单工作正常而不是我需要的东西(即 - 我还没想到的一些选项)我怎样才能得到我在第3行寻找的东西?

Kon*_*lph 5

您的Ordered变量名称错误.什么order回报的指数有序载体-即子集索引必须得到有序的元素.所以下面返回有序元素:

> ordered_indices = order(x1)
> ordered = x1[ordered_indices]
Run Code Online (Sandbox Code Playgroud)

MarkThinks输出可以用来实现rank,正如其名称所示,从字面上返回为每个元素(但确实几个不同的事情时元件绑):

> ranked = rank(x1, ties.method = 'first')
Run Code Online (Sandbox Code Playgroud)
> rbind(x1, ordered_indices, ordered, ranked)
                [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
x1                 1    1    3    2    1    1    2    3    4     3
ordered_indices    1    2    5    6    4    7    3    8   10     9
ordered            1    1    1    1    2    2    3    3    3     4
ranked             1    2    7    5    3    4    6    8   10     9
Run Code Online (Sandbox Code Playgroud)

  • 他们可以通过以下方式得到他们正在寻找的结果:`rank(x1,ties ="first")`. (2认同)