Ich möchte jedes Element eines Vektors mit spezifischer Wahrscheinlichkeit p
Probe. Dies ist, wie ich es noch, ich finde es schwer zu glauben, dass dies die eleganteste Art und Weise ist:R: Probe jedes Element eines Vektors mit spezifischer Wahrscheinlichkeit * elegant *
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"
Eine weitere Möglichkeit, eine Bernoulli-Verteilung unter Verwendung von:
sampInd <- ifelse(rbinom(length(vec), 1, p) == 1, TRUE, FALSE)
vec[sampInd]
[1] "a" "b" "c" "e"
Bin ich etwas base
Funktion fehlt zu tun dies eleganter oder über komplizierter meine Verwendung von sample
oder rbinom
? Es interessiert mich nicht viel für die Geschwindigkeit, obwohl es immer eine gute Sache ist.
Nicht sicher, ob es eleganter ist, aber ich denke, ich würde 'vec [Runif (Länge (vec))
Miff
@Miff Sie sollten dies als Antwort hinzufügen, wenn nichts Wunderbares kommen wird, werde ich es akzeptieren, wie es meiner Beurteilung nach * eleganter ist. –
Es ist im Wesentlichen das gleiche wie Ihre zweite Lösung, aber Sie müssen nicht "ifelse" haben. 'vec [rbinom (Länge (vec), 1, p) == 1]' –