R中的循环持续意外运行
我试图运行一个包含while和if语句的循环。代码在循环外工作,但在循环内不工作!这是一个非常简化的版本,基本上是试图收集集合xx[j],每个集合包含10个数字 当我运行它时,它实际上从未将“x”分配给集合xx[j],但我不知道为什么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
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。