Ifelse() mit drei Bedingungen
Ich habe zwei Vektoren:
a<-rep(1:2,100)
b<-sample(a)
Ich würde gerne eine ifelse-Bedingung, vergleicht jeden Wert der a
mit dem entsprechenden Wert des b
, und tut das folgende:
if a>b 1
if a<b 0
if a=b sample(1:2,length(a),replace=T)
den ersten beiden getan werden kann, mit :
ifelse(a>b,1,0)
aber ich bin mir nicht sicher, wie integrieren Sie den Fall, wo a
und b
gleich sind.
überlegen Sie auch, mit
switch
was gemeint ist, für genau diese situation (wo haben Sie if/else/else/else...). Durch die Kombination mit apply
Sie zu wo Sie sein wollen, aus.InformationsquelleAutor ghb | 2013-09-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie über das hinzufügen einer anderen ifelse:
In diesem Fall erhalten Sie den Wert 1, wenn a>b ist, dann, wenn a gleich b ist es entweder 1 oder 2 (
sample(1:2, length(a), replace = TRUE)
), und wenn nicht (also a muss kleiner als b) Sie bekommen den Wert 0.sample(1:2,1)
für jedena==b
.Du hast Recht, vielen Dank für die Ergänzung!
sample(1:2,1)
ersetzt werden kann, mitsample(1:2, length(a), replace = TRUE)
odersample(a)
jetzt die OP hat klargestellt, dass das, was er will.Ich schlage vor, mit
sample(1:2, length(a), replace = TRUE)
, denn nicht immer wird es die gleiche Verteilung wiesample(a)
.InformationsquelleAutor Rob
Dies ist eine einfache Möglichkeit:
Diese basiert auf Berechnungen mit booleschen Werten, die Umwandlung in numerische Werte.
InformationsquelleAutor Sven Hohenstein
Es ist die Doppeldeutigkeit Ihrer Frage. Wollen Sie zufällige Werte für alle Indizes, in denen
a==b
oder einer zufälligen Wert für alle Indizes?Die Antwort von @Rob wird die Arbeit im zweiten Szenario. Für das erste Szenario, ich schlage vor, die Vermeidung von
ifelse
:InformationsquelleAutor mpiktas