R中的循环持续意外运行

R中的循环持续意外运行,r,R,我试图运行一个包含while和if语句的循环。代码在循环外工作,但在循环内不工作!这是一个非常简化的版本,基本上是试图收集集合xx[j],每个集合包含10个数字 当我运行它时,它实际上从未将“x”分配给集合xx[j],但我不知道为什么 n <- 10 xx <- list() for (j in 1:5) { xx[j] <= NULL while (length(xx[j]) < n) { x <- runif(1) if (0.5 &l

我试图运行一个包含while和if语句的循环。代码在循环外工作,但在循环内不工作!这是一个非常简化的版本,基本上是试图收集集合xx[j],每个集合包含10个数字

当我运行它时,它实际上从未将“x”分配给集合xx[j],但我不知道为什么

n <- 10
xx <- list()

for (j in 1:5) {
  xx[j] <= NULL
  while (length(xx[j]) < n) {
    x <- runif(1)
    if (0.5 <= x) {
      xx[j] <- c(xx[j], x) 
    }
  }
}

n我已经修改并完善了代码

这些变化是:

  • 使用双括号访问列表的元素
    xx[[j]]
  • 创建目标长度
    5
  • 删除了将列表中的元素设置为
    NULL
    ,因为它们最初是
    NULL
固定代码:

n = 10
xx = vector('list',5)

for (j in seq_along(xx)) {
    while(length(xx[[j]]) < n){
        x = runif(1)
        if (0.5 <= x) {
            xx[[j]] = c(xx[[j]], x) 
        }
    }
}
n=10
xx=向量('列表',5)
对于(沿(xx)的(j){
while(长度(xx[[j]])如果(0.5表示
xx[j],列表的元素也用双括号
xx[[j]]
访问。谢谢!当定义“(j in)”而不是使用seq_long(xx)时,是否有原因导致代码不起作用?如果在没有目标长度的情况下定义,我会得到以下错误:xx[[j]]中的错误:下标超出边界使用
seq_(xx)
只是为了避免多次对向量长度进行硬编码。初始化
xx
后,无论
xx
的长度如何,代码都会工作。初始代码假定为5。