R函数order()和rank()的区别

1.order()函数

返回:将向量中的元素按照从小到大的顺序进行排列,返回元素的位置。

具体,我们考虑以下几个例子:

 例(1)  order(c(1, 2, 3, 4))

将向量c(1, 2, 3, 4)中的元素按照从小到大的顺序进行排序,得到1,2,3,4。其中元素1在原向量中的位置是1,元素2在原向量中的位置是2,元素3在原向量中的位置是3,元素4在原向量中的位置是4。所以,返回的位置是1,2,3,4。

例(2) order(c(5, 4, 3, 2, 1))

将向量c(5, 4, 3, 2, 1)中的元素按照从小到大的顺序进行排序,得到1,2,3,4,5。其中元素1在原始向量中的位置是5,元素2在原始向量中的位置是4,元素3在原始向量中的位置是3,元素4在原始向量中的位置是2,元素5在原始向量中的位置是1。因此,返回的位置是5,4,3,2,1。

例(3) order(c(2, 1, 3, 1))

将向量c(2, 1, 3, 1)中的元素按照从小到大的顺序进行排序,得到1,1,2,3。其中元素1在原始向量中的位置是2,第二个元素1在原始向量中的位置是4,元素2在原始向量中的位置是1,元素3在原始向量中的位置是3。所以,返回的位置是2,4,1,3。注意,这个例子与前两个例子稍有不同,区别是这个向量中含有两个相同的元素,那么如何返回两个相同元素的位置呢?按照它们在原始向量中出现的顺序,依次返回它们所在的位置。

2.rank()函数:返回向量中每个元素的排序(按照从小到大的顺序)

具体,我们考虑以下这几个例子:

 例(1) rank(c(1, 2, 3, 4))

向量中的元素是1,2,3,4。对这些元素按照从小到的顺序进行排序,结果为1,2,3,4。向量中第一个元素排在第1,向量中第二个元素排第2,向量中第三个元素排第3,向量中第四个元素排第4.

例(2) rank(c(5, 4, 3, 2, 1))

向量中的元素是5,4,3,2,1。对这些元素按照从小到大的顺序进行排序,结果是1,2,3,4,5。向量中的第一个元素排在5,向量中第2个元素排在第4,向量中第3个元素排在第3,向量中第4个元素排在第2,向量中第5个元素排在第1。

例(3)rank(c(2, 1, 3, 1))

向量中的元素是2,1,3,1。对这些元素按照从小到大的顺序进行排序,结果是1,1,2,3。这里两个1排在第1和第2,(1+2)/2=1.5。所以原始向量中第一个元素排在第3,第二个元素排在是1.5,第三个元素排在第4,第四个元素排在1.5。

总之,order()函数是将向量中的元素按照从小到大的顺序进行排序,返回已经排序后,每个元素在原始向量中的位置。而rank()函数是对原始向量中的每个元素,返回它在整个向量中按照从小到大的顺序排列,元素排在第几。

考虑以下例子,aa[order(aa)]返回的对aa中的元素按照从小到的顺序排列的元素,而不是位置啦!比如,你想将aa中的元素按照从小到大的顺序进行排序,想要实现这个目标,你需要aa[order(aa)]。

 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值