R异常:在函数内调用向量元素

时间:2019-06-18 16:49:47

标签: r function

我有一个自定义函数,其行为异常。函数*U1(a1,a2)*(定义如下)将输入a1a2用作输入,并输出另一个向量,比方说u1

我要调用该函数的集合是A,它是一个有限的数值向量。例如,假设A=seq(0,1,by=0.2)

所以A[4]=0.6A[0.2]=0.2

问题是,尽管参数具有相同的值,但我在调用U1(0.6,0.2)和调用U1(A[4],A[2])时会得到不同的结果。我现在很困惑。这是我不知道的R怪癖吗?

U1<-function(a1,a2){
lamda<-0.3
p1<-0
p2<-1
U1<-lamda*s11(a1,a2)-(1-lamda)*((a1-p1)^2)
U2<-lamda*(1-s11(a1,a2))-(1-lamda)*((a2-p2)^2) #big mistake
U<-c(U1,U2)
return(U)
}

函数s11是一个返回0到1之间的数字的函数

s11<-function(a1,a2){
eh<-0.4
if(a1<a2){
 if(a2>a1+eh){
   s<-punif(0.5*(a1+a2+eh),0,1)
  }
else{
  s<-1.0
 }
}
else{
 if(a2<a1-eh){
   s<-1-punif(0.5*(a2+a1-eh),0,1)
}
else{
  s<-1
}

}
return(s)
}

0 个答案:

没有答案