使用 R 的 if/else 语句中的计数器



我对R和编程相对较新,我想知道是否有办法在我的for循环中的ifelse语句中放置一个计数器。我在 for 循环中有以下 if/else 语句:

if(runif(1)<min(1,r)) {
Gibbsalph[,t]=alphcandidate
} else{
Gibbsalph[,t]=Gibbsalph[,t-1]
}

有没有办法计算循环在继续迭代时选择"if"选项的次数(即 Gibbsalph[,t]=alphcandidate 的次数)?

多谢!

这可能很有用,因为它避免了创建全局变量 i。 参见 R 和 Stata 中全局变量的危险示例

init.counter <- function(){
  x <- 0
  function(){
    x <<- x + 1
    x
   }
}  #source: hadley wickham
> counter1 <- init.counter()
> 
> counter1()
[1] 1
> counter1()
[1] 2
> 

要访问计数器的值而不迭代它,请执行以下操作:

environment(counter1)$x

所以它最终会变成:

counter2 <- init.counter()
if(runif(1)<min(1,r)) {
counter2()
Gibbsalph[,t]=alphcandidate
} else{
Gibbsalph[,t]=Gibbsalph[,t-1]
}
environment(counter2)$x

这是你现在得到的:

if(runif(1)<min(1,r))

假设你的循环是在序列jj = 1:t上,怎么样:

alltests <- runif(t) < min(1,r)  #vector of TRUE, FALSE
wincount <- sum(alltests)

在循环内,

Gibbsalph[,t] <- alphcandidate * alltests[jj] + Gibbsalph[,t-1]*(!alltests[jj])

相关内容

  • 没有找到相关文章

最新更新