对于R中的循环:y[[j]]中的错误:下标越界



我正在尝试计算一个值,并将结果插入到结果列表中。接下来,我想使用上一个结果作为输入,使用上一结果运行计算,并将新结果插入到结果列表中。

x = seq(1,10, by = 1)
y = list()
i = 2
j = 1
for(i in 1:10){
y[i] = (x[i] - y[[j]])/2
i = i +1
j = j + 1
}

你是这个意思吗?:

x = seq(1, 10, by = 1)
y = list()
i = 2
j = 1
for(i in 1:10){
y[[i]] = (x[i] - y[[j]])/2
# i = i+1 unnecesary 
j = j + 1 
}

正如其他人建议的那样,这导致了由于未初始化列表而导致的错误。

现在工作,但有点奇怪:

x = seq(1, 10, by = 1)
y = list()
i = 2
j = 1
# initialize y with random stuff
for(i in 1:10){
y[[i]] = rnorm(5) # fill with 5 random values
}
for(i in 1:10){
y[[i]] = (x[i] - y[[j]])/2
# i = i+1 unnecesary 
j = j + 1 
}

请注意,i = 2没有意义,因为它的值被两个循环索引覆盖,这两个索引的名称相同。

最新更新