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)]。