2012-04-06 2 views
0

R에 대한 optim() 함수에 관한 간단한 문제입니다. 루프의 변수에 따라 함수의 최소값을 찾으려고합니다.R은 루프에 따라 함수로 optim()을 호출합니다

f<-function(x,i){ 
    i*x 
} 

M<-matrix(0,10,1) 

    for (i in 1:5) { 
    M[i,1]<-optim(c(1),f,lower=-2,upper=2,method="L-BFGS-B") 
    } 
M 

R 내게 응답 : 정말 당신은 optim 호출에 i을 통과해야이 하나 ....

+0

유의하시기 바랍니다 많은 그래서 프랑스 사람들은 프랑스어를 말하지 않습니다. 그래서 미래의 질문에 대해서는 오류 메시지를 프랑스어에서 영어로 번역하는 것이 좋습니다. 또는 R을 영어 로케일로 전환 할 수 있습니다 ... –

+1

Google은 매우 좋은 직장입니다 [http://translate.google.com/#auto|en|Erreur%20dans%20i%20*] % 20x % 20 % 3A % 20 % 27i % 27 % 20est % 20manquant). –

답변

3

처리하는 방법을 이해하지

Erreur dans i * x : 'i' est manquant 

:

optim(1,f,i=i,lower=-2,upper=2,method="L-BFGS-B") 

... 및 optim은 목록을 반환하므로 어떤 요소를 선택해야합니까? M에 저장하려는 목록의 NT.

M[i,1] <- optim(1,f,i=i,lower=-2,upper=2,method="L-BFGS-B")$par 

UPDATE : 저스틴 코멘트에서 지적

이, 더 많은 R-같은 방법이 될 것이라고 할 : 나는 당신이 par을한다고 가정

L <- list() 
for (i in 1:5) { 
    L[[i]] <- optim(1,f,i=i,lower=-2,upper=2,method="L-BFGS-B") 
} 
V <- sapply(L, `[[`, "par") 
+0

당신이 이겼어! 나는 똑같은 것을 썼지 만, M을리스트로 초기화하고 모든 출력을 optim로부터 저장하는 잠재적 인 단계를 추가했다. – Justin

+0

@ Justin : 아마도 더 나은 해결책 일 겁니다. 편집 할게요. 감사! –