2014-11-29 3 views
1

datres이라는 목록이 각각 33 개의 데이터 세트로 구성되어 있습니다.for 루프에서 출력 목록을 저장하는 방법

for(i in dat) { 
N <- ncol(i) 
Amat <- t(rbind(rep(1,N), diag(rep(1,N)), diag(rep(-1,N)))) 
bvec <- c(1 , rep(0,N), rep(-0.15,N)) 
Dmat <- cov.shrink(i) #from tawny package 
dvec <- rep(0,N) 
mvw <- solve.QP(Dmat, dvec, Amat, bvec, meq = 1)$solution #from quadprog package 
names(mvw) = colnames(i) 
} 

그것의 작업을하지만, 과정의 마지막 반복을 저장합니다 스피이 같은 for loop로 세계 최소 분산 포트폴리오를 실행할 수 있습니다. 나는 그들을 모두 구하는 방법을 모른다. 33 mvw 결과를 모두 목록에 저장해야합니다. 내가 어떻게 해?

그 후, 나는 동등한 res 데이터 세트와 mvw의 결과를 평가해야한다 :

mvwreturns = res%*%matrix(mvw,ncol=1)

이 명령은 나에게 각 기간에 대해 평가 포트폴리오 returs을 제공합니다. 각 mvw 데이터는 res 데이터 세트와 일치합니다. 어떻게해야합니까? 내가 다른 for loop를 가야하는지 궁금하다.

도움을 주시면 감사하겠습니다. 내 가난한 영어 미안해.

답변

1

는 다음과 같은 작업을 수행 할 수 있습니다

루프 전에 빈 목록 mvw를 시작합니다.

mvw <- NULL #initiate list 
counter <- 1 
for(i in dat) { 
N <- ncol(i) 
Amat <- t(rbind(rep(1,N), diag(rep(1,N)), diag(rep(-1,N)))) 
bvec <- c(1 , rep(0,N), rep(-0.15,N)) 
Dmat <- cov.shrink(i) #from tawny package 
dvec <- rep(0,N) 
mvw[[counter]] <- solve.QP(Dmat, dvec, Amat, bvec, meq = 1)$solution) #from quadprog package 
#for each iteration mvw will be stored as the i-th element in a list 
names(mvw[[counter]]) = names(i) 
counter <- counter + 1 
} 

그럼 그냥 당신이 원하는 것을 할, 이전과 또 다른 작은 루프, 같은 방법으로 작업을 수행합니다 :

mvwreturns <- NULL 
for (i in 1:length(mvw) { 
     mvwreturns[i] = res[i]%*%matrix(mvw[i],ncol=1) 
} 

미안, 내가없는 그런 다음 목록에 새로운 요소로 각 데이터 세트를 추가 스크립트를 실행하기위한 모든 데이터가 있지만 아이디어를 얻을 수 있습니다.

희망이 있습니다.

+0

남자! 나에게 가르쳐 줘서 고마워. 이런 것들! 나는 그것을 정말로 좋아했다! 그리고 다시, 나의 가난한 Inglês와 당신의 시간 동안 유감스럽게도 대부분의 것에 대해 유감스럽게 생각한다! –

+0

그건 절대적으로 괜찮습니다 :). 그것에 대해 걱정하지 마라, 그것은 나의 기쁨이다. 기꺼이 도와 드리겠습니다. 그리고 나는 당신의 영어가 훌륭하다고 생각합니다. 나는 모든 것을 얻을 수있었습니다. 재미있어! – LyzandeR

+0

감사합니다! 나는 아직도 2 ~ 3 단계를 완수해야한다! 나는 열심히 노력할 것이다. 그러나 만일 내가 붙이게되면 나는 내가 여분의 약간의 도움을 필요로 할 것이다라고 생각한다!! LOL –

0

for 루프를 사용하는 대신 mapply을 확인하십시오. 각 항목에 대해 실행하려는 코드를 mvw를 반환하는 함수에 저장하고 datres을 해당 함수로 mapply 호출에 넣고 각 요소에 대한 결과 집합 목록을 datres에서 분리해야합니다.

+0

답장을 보내 주셔서 감사합니다. 나는 단지 당신이 제안하는 것을 얻지 못했습니다. 어쨌든 나는 R. Tks에서 그런 경험을하지 못합니다. –

관련 문제