sort
有index.return
默认的参数FALSE
.如果您将其设置为TRUE
您获得订购索引...基本上与您使用时相同order
.
我的问题
是存在的情况下是有意义的使用sort
与index.return = TRUE
代替order
?
order
简单地给出索引,而是sort
给出值(和 index.return=T
a 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
比其他更好的例子.