0
我在输出分配问题在“for”循环中挣扎:我生成一个空矩阵(“结果”)与适当的(不是???)尺寸在哪里循环应该从功能分配输出(PLS),但我得到一个错误...这里是代码:“For”循环输出问题在R
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
所以seq_along()是工具,我显然缺少的!非常感谢您的帮助! – Chega
幼稚的方法是'1:length(nc)',但如果'nc'长度为0或不存在,这将会以令人惊讶的方式失败。 – Justin
我看到 - 在大多数情况下,我可以使用seq_along()和seq_len(),当1:length()似乎很方便时... – Chega