Альтернативой является выбор элемента из вектора с использованием runif.т.е.
a <- c(1,2,0,7,5)
a[runif(1,1,6)]
Допустим, вам нужна функция, которая выбирает ее каждый раз при запуске (полезно, например, в симуляции).Так что
a <- c(1,2,0,7,5)
sample_fun_a <- function() sample(a, 1)
runif_fun_a <- function() a[runif(1,1,6)]
microbenchmark::microbenchmark(sample_fun_a(),
runif_fun_a(),
times = 100000L)
Единица: наносекунды
sample_fun_a () - 4665
runif_fun_a () - 1400
runif в этом примере выглядит быстрее.