2017-05-12 1 views
1

Ich habe versucht, eine Antwort für diese Frage zu suchen, aber ich bin mir nicht sicher, ob ich die Frage richtig in der Suchleiste stelle, also hier geht es. Ich möchte eine if- oder ifelse-Anweisung mit einer logischen Bedingung basierend auf zwei Vektoren erstellen.Mit if/ifelse-Anweisung mit Vektorbedingungen in R

Hier ist eine verkürzte Version des Codes:

ifelse(Vector1 == c(T,T,T),"Combo1","Combo2") 

Ich habe einen Vektor namens "Vektor1". Ihr Wert ist derzeit [T T F]. Also im obigen Fall möchte ich einen Ausgabewert von "Combo2" gedruckt werden. Stattdessen erhalte ich einen Vektor von [Combo1 Combo1 Combo2]. So sehe ich, dass es diese Werte in einen Vektor übergibt, aber ich möchte, dass die ifselse-Anweisung einen einzelnen TRUE- oder FALSE-Wert übergibt, um einen einzelnen "Combo" -Wert zu erhalten.

Es gibt 8 Kombinationen von [T/F T/F T/F], also versuche ich mehrere dieser ifelse-Anweisungen zusammen zu verschachteln, aber ich dachte, ich würde einfach anfangen.

Ich habe versucht, mit der if-Anweisung, aber das schien auch nicht für mich arbeiten.

Ich schätze jede Hilfe.

+2

Von '? Ifelse':" gibt einen Wert mit der gleichen Form wie Test "zurück. Deshalb erhalten Sie einen Vektor mit der gleichen Form wie Vector1. – neilfws

+0

Außer 'test' ist ein logischer Vektor. Es ist also nicht die gleiche Form von "Vector1" ... es hat die gleiche Form wie "Vector1 == c (T, T, T)" und die "Form", die "# [1] TRUE TRUE FALSE" ist. (Zugegeben, der Test für einen logischen Vektor, der jeweils wahr ist, ist der Vektor selbst, aber das 'Test' -Objekt ist nicht nur Vector1, sondern die Ergebnisse des Operators '== '. –

Antwort

5

Sie können auch eine normale if-Anweisung tun, da es einen Wert zurückgibt:

my_result = if(all(Vector1 == c(T,T,T))) {"Combo1"} else {"Combo2"} 

Die ifelse Funktion ist für vektorisiert bedingte Aussagen.

Mit der if-Standardanweisung entfernen Sie potenzielle Mehrdeutigkeiten/Fehlinterpretationen, da der Standard nur eine Bedingung auswertet.

+0

Danke für Ihre Hilfe. Das hat super funktioniert! Ich bin ziemlich neu in R, also muss ich mehr über diese Aussage lernen. – trijamms