首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R高效编程中的循环

R高效编程中的循环
EN

Stack Overflow用户
提问于 2013-09-03 22:02:33
回答 1查看 165关注 0票数 0

我有以下程序。我只想运行for循环,并将每次迭代的结果保存到valg[i,]valo[i,]obj[i,]矩阵/表中

我做了一些错误的事情,我得到了以下错误

代码语言:javascript
复制
Error in `[<-`(`*tmp*`, i, , value = c(80.6413039191413, 40.0368791515846,  : 
  subscript out of bounds

此程序需要DEoptim包

如果能帮上忙,我将不胜感激

代码语言:javascript
复制
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 
}
EN

回答 1

Stack Overflow用户

发布于 2013-09-03 22:07:48

除非您忘记发布它们,否则这不是问题所在,您必须首先初始化对象valg (和其他对象)以允许将其存储在索引中。

例如:

代码语言:javascript
复制
valg <- matrix(1, nrow=10, ncol=3)

将初始化对象。

从那时起,您可以使用循环在其中进行存储。

代码语言:javascript
复制
for (i in 1:10) {
    valg[i, ] <- 1:3
}

在发布基本的R问题之前,您可能想要在线阅读一些R教程。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18594329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档