Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中函数中未使用的参数_R - Fatal编程技术网

R中函数中未使用的参数

R中函数中未使用的参数,r,R,我是R新手,尝试使用接受-拒绝方法生成标准正态变量作为赋值的一部分,但我不知道我在定义这个函数时有何失误。我已经看过了其他未使用参数错误的案例,但它们似乎和有额外的变量作为输入有关,我不相信我会这样做。有人能解释为什么会这样吗?我真的很想更好地理解R是如何工作的 AR<-function(u1,u2){ y1=(-1)*(log(u1)) y2=(-1)*(log(u2)) condition=(((y1)-1)*((y1)-1))/2 u3=runif(1

我是R新手,尝试使用接受-拒绝方法生成标准正态变量作为赋值的一部分,但我不知道我在定义这个函数时有何失误。我已经看过了其他未使用参数错误的案例,但它们似乎和有额外的变量作为输入有关,我不相信我会这样做。有人能解释为什么会这样吗?我真的很想更好地理解R是如何工作的

AR<-function(u1,u2){
    y1=(-1)*(log(u1))
    y2=(-1)*(log(u2))
    condition=(((y1)-1)*((y1)-1))/2
    u3=runif(1)
    ifelse(u3>=0.5,zz=abs(z),zz=(-1)*(abs(z)))
}

u1=runif(1)
u2=runif(1)
AR(u1,u2)
# Error in ifelse(u3 >= 0.5, zz = abs(z), zz = (-1) * (abs(z))) : 
#  unused argument(s) (zz = abs(z), zz = (-1) * (abs(z)))
AR=0.5,zz=abs(z),zz=(-1)*(abs(z)))
}
u1=运行IF(1)
u2=运行时(1)
AR(u1,u2)
#ifelse中的错误(u3>=0.5,zz=abs(z),zz=(-1)*(abs(z)):
#未使用的参数(zz=abs(z),zz=(-1)*(abs(z)))

ifelse
没有名为
zz
的参数(名称为
test,yes,no
,请参见
?ifelse
)。这就是为什么会出现错误
未使用的参数
ifelse
的正确用法是:

zz <- ifelse(u3 >= 0.5, abs(z), (-1) * abs(z))
zz=0.5,abs(z),(-1)*abs(z))

请注意,通常最好使用
是的,我开始明白了。我将其修改为@sgibb,并将其作为
zz=AR(u1,u2)
运行,其中u1和u2只是
runif(1)
。当调用函数时,它是否也会工作,以表示
zz好的,这会处理好它。所以如果它是两个不同的变量,我就不能使用ifelse,对吗?比如,如果我想将a=expr设置为true,将b=expr设置为false,那么我必须用另一种方式来实现它?我可以在常规if语句中使用等价运算符吗?如果我尝试这样做,它的工作方式是否与ifelse类似?你可以在iflese中嵌入ifelse,比如
zz=0.5,abs(z),ifelse(u3>=0.25,(-1)*abs(z),abs(z)*2))