是否有 R 函数用于从 1:n 跨 n 个向量进行采样?

问题描述 投票:0回答:1

我试图在 1 和

n
之间选择一个随机值,给定
n
的向量。这是我当前的解决方案:

n <- c(10, 5, 35, 16, 2)
sapply(n, function (x) sample(seq_len(x), 1))

但是,这似乎是一个低效的解决方案,因为我每次都循环

n
并从 1:n 采样。有没有更有效的方法?

r loops vectorization
1个回答
0
投票

你可以不用循环来做到这一点

ceiling(n * runif(n))

根据文档,如果

n
是向量,则
runif(n)
被视为
runif(length(n))

© www.soinside.com 2019 - 2024. All rights reserved.