R中的“For”循环输出问题

时间:2013-05-29 14:35:32

标签: r loops

我正在努力解决“for”循环中的输出分配问题:我生成一个空矩阵(“结果”),其中有适当的(不是???)维度,其中循环应该分配函数的输出(请问,但我收到错误......以下是代码:

library(pls)
set.seed(10000)
mat <- replicate(100, rnorm(100))
y <- as.matrix(mat[,1], drop=F)
x <- mat[,2:100]
min.nc <- 3
max.nc <- 8
nc <- seq(min.nc, max.nc)
results <- matrix(NA, length(nc), 1)
for(q in nc) {
  pls <- plsr(y ~ x, ncomp = q)
  results[q,] <- RMSEP(pls, intercept=F, estimate="train")$val[1,1,q]
}

运行“for”循环后的错误消息显示:

Error in `[<-`(`*tmp*`, q, , value = 0.329631604369802) : 
  subscript out of bounds

...我不明白,因为迭代器“nc”的大小恰好是“length(nc)”。有什么想法吗?

非常感谢您的时间和帮助!

Chega

1 个答案:

答案 0 :(得分:4)

q为3:8,矩阵results为1:6。因此,当它在results[q,]时尝试分配q > 6时,您会收到此错误。

> results[7,]
Error in results[7, ] : subscript out of bounds

q的值是nc而不是seq_along(nc)的每个值。

for (q in nc) print(q) 

对战

for (q in seq_along(nc)) print(nc[q])