假设我有一个包含1,000个元素的向量。获得R中前100个元素的最大值的最快方法是什么?
目前我正在做$pics = DB::table('pictures')
foreach ($pics as $pica) {
if ($pica->category !== 1)
{
continue;
}
echo ...
,这很好用。有更快的方法吗?
答案 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