订单功能出错

时间:2017-06-11 16:03:45

标签: r

我在R中的订单功能遇到问题。从一个新的会话开始,我得到了

iris[98:99,3]
[1] 4.3 3.0
order(iris[98:99,3])
[1] 2 1
order(iris[,3])[98:99]
[1] 127 139

第一顺序声明说,如果我只对有问题的两个元素进行排序,那么正确地说明4.3是在3.0之后。好。但是,当我对整个列进行排序并只询问元素98和99的顺序时,命令似乎认为3.0是在4.3之后。我在这里误解了一些东西还是这个错误?

如果重要

sessionInfo()
R version 3.3.3 (2017-03-06)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=English_United States.1252 
[2] LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods  
[7] base     

2 个答案:

答案 0 :(得分:3)

它工作正常,但你在脑海中引用了错误的数字。 order的结果是原始向量的索引,意思是

order(iris[,3])[98:99]
127 139

说如果你将虹膜[,3]元素从小到大排列并查看第98和第99个元素,你将从原始向量中获得数字127和139(均为4.8)。

答案 1 :(得分:1)

这是切换支架的结果

order(iris[,3][98:99])
#[1] 2 1

在OP的帖子中,

order(iris[,3]) 

给出整列的order,然后我们选择第98和第99次观察

order(iris[,3])[98:99]
#[1] 127 139

我们需要查看rank此处

order(order(iris[,3]))[98:99]
#[1] 75 51