2016-05-28 3 views
0

Ich versuche, eine if Anweisung in einer Funktion zu schreiben. Es ist für die x Variable, die entweder ein paar der Variablen aus dem Datensatz oder alle Variablen in der data.frame, wie sein kann: (Beide X und Y gegeben wie Spaltennamen)R-Funktion If-Anweisung für die Weitergabe von Variablen

f <- function(y,x,data){ 
    if (x=="all"){something<-y+2}else{something<-y+5} 
} 

ich den Fehler :

"the condition has length > 1 and only the first element will be used"

+1

Bitte ein Arbeitsbeispiel/Beispieldatensatz angeben. – coatless

+0

Das ist normalerweise der Fehler, den Sie erhalten, wenn Sie 'ifselse' (das vektorisiert ist) anstelle von' if' verwenden müssen (was nicht der Fall ist), aber es ist schwer ohne Daten/Kontext zu sagen. – alistaire

Antwort

1

Ich möchte ansprechen, wie der logische Vergleich funktioniert. Dies kann Ihnen helfen, das Problem zu lösen.

Wenn Sie logische Operation ohne if Anweisung verwenden, erhalten Sie dies.

Wenn Sie jedoch die logische Operation innerhalb der "if" -Anweisung verwenden, funktioniert das anders. Es verwendet nur das erste Element wie dieses Beispiel.

if(c("a","b","c","a") == "b"){print("exist")}else{print("not exist")} 
[1] "not exist" 

if(c("a","b","c","a") == "a"){print("exist")}else{print("not exist")} 
[1] "exist" 

Ich nehme an, Sie können length() oder %in% verwenden müssen.

Verwandte Themen