循环在R中的循环内

时间:2014-12-12 03:38:13

标签: r iteration nested-loops

我正在尝试创建一个R代码,将另一个循环置于我已经创建的循环中。这是我的代码:

t <- rep(1,1000) 
omega <- seq(from=1,to=12,by=1)
for(i in 1:1000){
    omega <- setdiff(omega,sample(1:12,1))
    t[i] <- length(omega)
    remove <- 0
    f <- length(t [! t %in% remove]) + 1
 }

当我运行这段代码时,我得到一个数字,它需要f才能达到零向量,但我想对这个实验进行10000次迭代。

2 个答案:

答案 0 :(得分:1)

replicate可能就是你想要运行外循环的方式。也不需要f赋值在循环内。在这里,我将其移到了外面,并将其转换为只计算大于0的t元素加上1。

result <- replicate(10000, {
  t <- rep(1, 1000) 
  omega <- 1:12
  for(i in seq_along(t)) {
    omega <- setdiff(omega,sample(1:12,1))
    t[i] <- length(omega)
  }
  sum(t > 0) + 1
})

我怀疑您的代码也可以通过其他方式进行简化,并且您可以在没有模拟的情况下写下您正在寻找的分发。我相信你感兴趣的变量只是你得到每个数字1:12中的至少一个,是吗?

答案 1 :(得分:1)

您是否只想将现有循环运行10,000次,如下所示?

t <- rep(1,1000) 
omega <- seq(from=1,to=12,by=1)
f <- rep(NA, 10000)
for(j in 1:10000) {
    for(i in 1:1000){
        omega <- setdiff(omega,sample(1:12,1))
        t[i] <- length(omega)
        remove <- 0
        f[j] <- length(t [! t %in% remove]) + 1
     }
}