Ich möchte eine Funktion ausführen, die zwei Vektoren betrachtet und je nach Vorzeichen der Werte in den beiden Vektoren unterschiedliche Werte zurückgibt. Ich habe eine Funktion geschrieben, die zwei Werte vergleichen kann, aber dann möchte ich das auf zwei Vektoren ausführen. Also habe ich sapply benutzt, aber ich bekomme andere Ergebnisse als erwartet.sapply mit benutzerdefinierter Funktion (Reihe von if-Anweisungen)
bear.correction<- function(x,y){
if(x > 0 && y < 0){
return(90)
}else if(x < 0 && y < 0){
return(180)
}else if(x < 0 && y > 0){
return(270)
}else return(0)
}
Das folgende gibt das erwartete (und gewünschtes) Ergebnis:
bear.correction(1,-1)
bear.correction(1,1)
bear.correction(-1,1)
bear.correction(-1,-1)
Ergebnis: 90, 0, 270, 180
aber wenn ich versuche, die gleichen Vergleiche zu tun, sondern mit ich Vektoren mit sapply bekommen ein anderes Ergebnis:
x <- c(1,1,-1,-1)
y <- c(-1,1,1,-1)
sapply(x,bear.correction,y)
Ergebnis: 90, 90, 180, 180.
Ich kann nicht sehen, was falsch ist, also bitte helfen!
Es tut mir leid @agstudy, ich dachte, es war möglich, mehrere Antworten zu akzeptieren, aber anscheinend nicht. Ich denke, Stephan Kolossas Antwort war die beste, obwohl die anderen alle auch funktionieren, daher meine positiven Kommentare. –
kein Problem. Ich hoffe, das hilft. – agstudy