【发布时间】:2012-12-21 05:25:57
【问题描述】:
我想运行一个查看两个向量的函数,根据两个向量中值的符号返回不同的值。我写了一个函数来比较两个值,但是我想在两个向量上运行它。所以我使用了 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。
我看不出有什么问题,所以请帮忙!
【问题讨论】:
-
对不起@agstudy,我认为可以接受多个答案,但显然不是。我认为 Stephan Kolossa 的答案是最好的,尽管其他人也都有效,因此我的积极 cmets。
-
没问题。希望对您有所帮助。