R:优雅地对具有特定概率*的向量的每个元素进行采样*

时间:2017-05-23 10:18:53

标签: r random

我希望以特定概率p对矢量的每个元素进行采样。这就是我目前的做法,我发现很难相信这是最优雅的方式:

vec <- letters[1:5]
p <- 0.8
sampInd <- sample(c(TRUE, FALSE), length(vec), prob = c(p, 1-p), replace = TRUE)
vec[sampInd]
[1] "c" "d" "e"

使用伯努利分布的另一种方式:

sampInd <- ifelse(rbinom(length(vec), 1, p) == 1, TRUE, FALSE)
vec[sampInd]
[1] "a" "b" "c" "e"

我是否缺少一些base功能来更优雅地执行此操作,或者使我对samplerbinom的使用更加复杂?不要太在意速度,尽管它总是一件好事。

1 个答案:

答案 0 :(得分:0)

(自从@Miff评论这个答案以来已经过了一天,所以我会把它写在这里:)

vec[runif(length(vec)) < p]

是我目前所知道的最优雅的方式。