无论出于何种原因,我无法理解函数"订单"实际上在做什么.在下面的代码中,我展示了一些数据,什么顺序返回,然后我天真地想到的顺序应该返回但不会.对我而言,似乎列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行寻找的东西?
您的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)
| 归档时间: |
|
| 查看次数: |
238 次 |
| 最近记录: |