我有一个自定义函数,其行为异常。函数*U1(a1,a2)*
(定义如下)将输入a1
和a2
用作输入,并输出另一个向量,比方说u1
。
我要调用该函数的集合是A
,它是一个有限的数值向量。例如,假设A=seq(0,1,by=0.2)
所以A[4]=0.6
和A[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)
}