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.
%Vor%Das Folgende gibt das erwartete (und gewünschte) Ergebnis:
%Vor%Ergebnis: 90, 0, 270, 180
Wenn ich jedoch versuche, die gleichen Vergleiche zu machen, aber Vektoren mit sapply benutze, bekomme ich ein anderes Ergebnis:
%Vor%Ergebnis: 90, 90, 180, 180.
Ich kann nicht sehen, was los ist, also bitte helfen!
Sie sollten mapply()
anstelle von sapply()
verwenden:
Warum? Ihr sapply()
wendet bear.correction()
auf jeden Eintrag von x
... an, gibt ihm jedoch den gesamten y
Vektor als zweites Argument, und so betrachtet bear.correction()
nur der erste Eintrag in y
in allen vier Fällen. Verwenden Sie mapply()
.
setze browser()
in deine Funktion wie folgt:
Sie werden sehen, was genau als Parameter geben:
%Vor% Wie andere hier sagten, müssen Sie mapply
verwenden, um skalare Werte zu erhalten, nicht atomare Vektoren.
aber ich denke, hier mit plyr
ist wirklich einfacher (nettes Ausgabeformat)