2 つのベクトルを調べて、2 つのベクトルの値の符号に応じて異なる値を返す関数を実行したいと考えています。2 つの値を比較する関数を作成しましたが、これを 2 つのベクトルで実行したいと考えています。そのため、sapply を使用しましたが、予想とは異なる結果が得られています。
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)
}
以下は、期待される (そして望ましい) 結果を示します。
bear.correction(1,-1)
bear.correction(1,1)
bear.correction(-1,1)
bear.correction(-1,-1)
結果: 90、0、270、180
ただし、同じ比較をしようとしても、ベクトルを sapply で使用すると、異なる結果が得られます。
x <- c(1,1,-1,-1)
y <- c(-1,1,1,-1)
sapply(x,bear.correction,y)
結果: 90、90、180、180。
何が悪いのかわからないので、助けてください!