为这个曾头疼过一阵,总是将order()与rank()搞混淆。
先看下结果:
test <- c(2,4,3,1)
order(test)
rank(test)
order的运行结果为:4 1 3 2
rank的运行结果为:2 4 3 1
以下解释差别:
order是将结果按值的大小一个个抽取出来,如先抽第·4
·个元素1,再抽第·1
·个元素2,再抽第·3
·个元素3,再抽第·2
·个元素4,将抽取的元素在矢量中的位置表达出来,即结果 4 1 3 2
。
rank是对矢量进行整体排序,元素2排第 2
,元素4排第 4
,元素3排第 3
,元素1排第 1
,整体记录下来,即结果2 4 3 1
。
最后谈谈order的用法:
order()的核心是可以记录元素顺序抽取的的次序,最直接的用法就是v[order(v)]
,会对元素(numberic、character等)进行升序排序