単なるソートなんだけど?
> f1 = function() arrange(aq, Ozone)
> a = f1(); head(a); tail(a)
Ozone Solar.R Wind Temp Month Day HighTemp
1 1 8 9.7 59 5 21 0
2 1 8 9.7 59 5 21 0
3 1 8 9.7 59 5 21 0
4 1 8 9.7 59 5 21 0
5 1 8 9.7 59 5 21 0
6 1 8 9.7 59 5 21 0
Ozone Solar.R Wind Temp Month Day HighTemp
15295 NA 145 13.2 77 9 27 1
15296 NA 145 13.2 77 9 27 1
15297 NA 145 13.2 77 9 27 1
15298 NA 145 13.2 77 9 27 1
15299 NA 145 13.2 77 9 27 1
15300 NA 145 13.2 77 9 27 1
>
> # order を使う
> # rownames(d) = NULL は,行名を無視するため(arrange も,最後にやっている)
> f2 = function() {
+ d = aq[order(aq$Ozone),]
+ rownames(d) = NULL
+ d
+ }
> identical(f1(), f2())
[1] TRUE
>
> # 両者互角(引き分け)
> benchmark(f1(), f2(), columns=c("test", "replications", "elapsed", "relative", "user.self", "sys.self"), replications=1000, order=NULL)
test replications elapsed relative user.self sys.self
1 f1() 1000 5.322 1.000 5.193 0.160
2 f2() 1000 5.341 1.004 5.160 0.214
※コメント投稿者のブログIDはブログ作成者のみに通知されます