获得向量中前100个元素的最大值

时间:2015-12-05 21:41:48

标签: r

假设我有一个包含1,000个元素的向量。获得R中前100个元素的最大值的最快方法是什么?

目前我正在做$pics = DB::table('pictures') foreach ($pics as $pica) { if ($pica->category !== 1) { continue; } echo ... ,这很好用。有更快的方法吗?

1 个答案:

答案 0 :(得分:0)

为了便于比较,我尝试了以下方法,你的答案仍然是最快的。

library(microbenchmark)
library(data.table)
x <- runif(1000)
xdt <- data.table(x)

microbenchmark(max(x[1:100]), max(x[-c(101:1000)]),max(head(x,100)),xdt[1:100,max(x)])
Unit: microseconds
                 expr     min       lq      mean   median       uq      max neval
        max(x[1:100])   1.090   1.4385   2.50614   2.0365   2.9890   14.402   100
 max(x[-c(101:1000)])   6.724   9.6775  11.59118  10.6460  12.2560   42.700   100
    max(head(x, 100))   8.600  10.9975  15.06039  14.3295  17.0845   39.316   100
   xdt[1:100, max(x)] 266.587 285.3405 385.43024 296.0390 314.0550 7345.151   100