Ich würde gerne Mutate verwenden, um eine Spalte mit der Binomialverteilung zu berechnen.dplyr mutieren mit rbinom geben keine Zufallszahlen zurück
Ich habe folgendes Beispiel:
library("dplyr")
d = data.frame(ref = rbinom(100,100,0.5))
d$coverage = 100
d$prob = 0.5
d$eprob= d$ref/d$coverage
d = tbl_df(d)
mutate(d,
ref1= ref,
cov1 = coverage,
eprob1 = eprob,
ref2=rbinom(1, coverage, eprob),
ref3=rbinom(1, cov1, eprob1)
)
Ergebnis ist wie folgt:
Source: local data frame [100 x 9]
ref coverage prob eprob ref1 cov1 eprob1 ref2 ref3
1 52 100 0.5 0.52 52 100 0.52 45 44
2 50 100 0.5 0.50 50 100 0.50 45 44
3 45 100 0.5 0.45 45 100 0.45 45 44
4 45 100 0.5 0.45 45 100 0.45 45 44
5 47 100 0.5 0.47 47 100 0.47 45 44
6 46 100 0.5 0.46 46 100 0.46 45 44
7 50 100 0.5 0.50 50 100 0.50 45 44
8 53 100 0.5 0.53 53 100 0.53 45 44
9 44 100 0.5 0.44 44 100 0.44 45 44
10 56 100 0.5 0.56 56 100 0.56 45 44
Ich verstehe es nicht - ich die mutieren Funktion wollen aus der binomischen gezogen, um eine Zufallszahl zurück Verteilung durch Ref und Coverage (die "Ref2") ...
Mutate lesen Sie die Spalten richtig - aber etwas seltsames passiert, wenn Sie rbinom aufrufen ...
Jede Hilfe, die ich schätze.
Eine noch allgemeinere Lösung ist 'rbinom (n(), coverage, eprob)', da 'n()' die Größe der Daten findet, die gerade mutiert werden. (Dies funktioniert auch mit gruppierten Tabellen) –
@DavidRobinson - Ja, das ist besser. Ich werde meine Antwort bearbeiten, um das zu reflektieren. Vielen Dank. – Alex
Aber wird dies nicht den gleichen Eprob-Wert für alle 100 Draws verwenden? (Dies ist nicht was ich will - ich möchte 1 Zahl aus 100 verschiedenen Binomialverteilungen zeichnen, da Eprob 100 verschiedene Werte annimmt). – pallevillesen