我有以下程序。我只想运行for循环,并将每次迭代的结果保存到valg[i,]、valo[i,]和obj[i,]矩阵/表中
我做了一些错误的事情,我得到了以下错误
Error in `[<-`(`*tmp*`, i, , value = c(80.6413039191413, 40.0368791515846, :
subscript out of bounds此程序需要DEoptim包
如果能帮上忙,我将不胜感激
g = matrix(c(1,6,1,1,1/6,
1/6,1,6,1,1,
1,1/6,1,6,1,
1,1,1/6,1,6,
6,1,1,1/6,1
), nrow=5, ncol=5)
a <- t(g)
lsm <- function(x){
b <- a - outer(x,x,`/`)
z <- sum(b^2)
return(z)}
for (i in (1 : 10)){
outDEoptim <- DEoptim(lsm, lower = rep(0.001,nrow(a)),
upper = rep(100,nrow(a)),DEoptim.control(trace = FALSE))
valg[i,] = rbind(outDEoptim$member$bestmemit[200,]) ## Save for each itr i and input to optim below for each itr
lsmoptl <- optim(par=c(valg[i,]), fn=lsm, gr = NULL,
method = c("L-BFGS-B"))
valo[i,] = lsmoptl$par/sum(lsmoptl$par) ## Save for each itr i
obj[i,] = lsmoptl$value ## Save for each itr i
}发布于 2013-09-03 22:07:48
除非您忘记发布它们,否则这不是问题所在,您必须首先初始化对象valg (和其他对象)以允许将其存储在索引中。
例如:
valg <- matrix(1, nrow=10, ncol=3)将初始化对象。
从那时起,您可以使用循环在其中进行存储。
for (i in 1:10) {
valg[i, ] <- 1:3
}在发布基本的R问题之前,您可能想要在线阅读一些R教程。
https://stackoverflow.com/questions/18594329
复制相似问题