Насколько я знаю, нет реализованного способа, который позволил бы достичь более высокой эффективности, чем базовый код
a <- c(5, 2, 11, 3)
b <- order(a, decreasing = TRUE)
b[1:floor(0.1 * length(b))]
Однако можно добиться чего-то похожего на то, что вы просите, используя пакеты magrittr
, dplyr
или аналогичные, которые позволяют передавать вызовы по трубопроводу. Это будет похоже на
a <- c(5, 2, 11, 3)
c <- a %>% order(., decreasing = TRUE) %>% .[1:floor(0.1 * length(.))]
identical(b[1:floor(0.1 * length(b))],c)
[1] TRUE