2
特定の確率p
でベクトルの各要素をサンプリングしたいと考えています。これは、私は現在、それを行う方法ですが、私はそれは難しい、これが最もエレガントな方法であると信じて見つける:R:特定の確率*を持つベクトルの各要素をエレガントにサンプリングする*
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
機能をしないのですこれはより優雅に、または私の使用を複雑にすることsample
またはrbinom
?スピードについてはあまり気にしないでください。それは常に良いことです。
もっとエレガントなのかどうかわかりませんが、私は 'vec [runif(length(vec))
Miff
@ミフ答えとして追加する必要があります、奇跡は何も起こらない場合、私はそれが私の判断としてそれを受け入れるよ*よりエレガントです。 –
これは基本的には2番目の解決策と同じですが、 'ifelse'を使う必要はありません。 'vec [rbinom(length(vec)、1、p)== 1]' –