错误代码缺少值,其中R中需要TRUE / FALSE

问题描述 投票:0回答:1

运行代码时,我一直收到此错误消息,但我不确定该如何解决。

我的代码如下:

gwmh<-function(target,N,x,sigmasq){  
  p<-add.var()
  samples<-c(x,p)
  for(i in 2:N){
    prop<-rnorm(1,0,sqrt(sigmasq))
    if(runif(1)<min(1,(target(x+abs(prop)*p))/target(x))){
      x<-x+prop
    samples<-rbind(samples,c(x,p))} else{
      p<--p
    samples<-rbind(samples,c(x,p))
    }
  }
  samples[(1:N)]  ##delete after testing
} 

错误说:if(runif(1)

((add.var是我创建的用于在{-1,1}中随机生成p的函数)

r if-statement syntax rstudio
1个回答
0
投票

我测试了我的评论,并感到更愿意提供答案。

尝试以下操作

if(TRUE){print("Test")}
# prints "Test"

if(FALSE){print("Test")}
# prints nothing

if(NA){print("Test")}
# throws your error

因此在此表达式内:

runif(1)<min(1,(target(x+abs(prop)*p))/target(x))

结果既不是TRUE也不是FALSE,而是NA,并且看到runif()不应丢掉它必须出现在比较中的任何遗漏。

© www.soinside.com 2019 - 2024. All rights reserved.