2013-09-03 1 views
0

У меня есть следующая программа. Я просто хочу, чтобы запустить цикл и сохранить результаты от каждой итерации в valg[i,], valo[i,] и obj[i,] матрицы/таблицыlooping in R эффективное программирование

я делаю что-то неправильно, я получаю следующее сообщение об ошибке

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 
} 
+0

Вы не создали (или не показали нам, как вы создали) 'valg' или' obj'. Без них мы не можем много помочь. – Justin

ответ

1

, если вы Ф.О. rgot, чтобы опубликовать их, и это не проблема, вы должны сначала инициализировать объект valg (и другие), чтобы он мог хранить в индексах.

Например:

valg <- matrix(1, nrow=10, ncol=3) 

будет инициализировать объект.

С этого момента вы можете хранить в нем, используя петлю.

for (i in 1:10) { 
    valg[i, ] <- 1:3 
} 

Возможно, вы захотите прочитать некоторые учебники R в Интернете перед публикацией элементарных вопросов R.

 Смежные вопросы

  • Нет связанных вопросов^_^