是否有充分的理由使用`sort`和`index.return = TRUE`而不是`order`?

von*_*njd 5 sorting r

sortindex.return默认的参数FALSE.如果您将其设置为TRUE您获得订购索引...基本上与您使用时相同order.

我的问题
是存在的情况下是有意义的使用sortindex.return = TRUE代替order

RLa*_*ave 6

order简单地给出索引,而是sort给出值(和 index.return=Ta list):

x <- runif(10, 0, 100)
order(x)
# [1]  2  7  1  9  6  5  8 10  4  3
sort(x, index.return=T)
# $`x`
# [1] 0.08140348 0.18272011 0.23575252 0.51493537 0.64281259 0.92121388 0.93759670 0.96221375 0.97646916 0.97863369
# 
# $ix
# [1]  2  7  1  9  6  5  8 10  4  3
Run Code Online (Sandbox Code Playgroud)

order对于大数字(更长的矢量大小),似乎更快一点:

x <- runif(10000000, 0, 100)

microbenchmark::microbenchmark(
  sort = {sort(x, index.return=T)},
  order = {x[order(x)]},
  times = 100
)
# Unit: milliseconds
# expr      min       lq     mean   median       uq      max neval
# sort 63.48221 67.79530 78.33724 70.74215 74.10109 173.1129   100
# order 56.46055 57.18649 60.88239 58.29462 62.13086 155.5481   100
Run Code Online (Sandbox Code Playgroud)

因此,index.return = TRUE只有在需要list返回对象时才应该选择排序.我找不到sort比其他更好的例子.