첫 번째 열에 시작 달이 있고 두 번째 열에 월간 수익률 (아래 예제)이있는 n * 2 df가 있습니다. 날짜는 동물원 패키지를 사용하는 1 년 - 월 양식입니다.다른 길이의 계산 반복
각 시작 달 반환부터 시작하여 1 - 12 개월 수익을 계산하고 마지막 12 개 항목을 구성하는 복합 수익과 함께 n * 13 데이터 프레임을 생성하는 데 사용합니다 (단 2 : 1m 반환, Col 3 : 2m return, ... Col 13 : 12m return).
allreturns= function (x) {
cumprod(1+x/100)-1 }
내 질문은 : 수익률을 계산하기 위해
, 나는 간단한 cumprod를 사용하고 반품 열을 아래로가는 길이하여이 기능을 모두 반복 lapply 적용 사용하는 영리한 방법이있다 (cumprod 매월 1:12) 그리고 시작 달까지? 이것은 모든 리턴 값 (for {i for length (sample $ monthlyreturns))과 같은 for 루프를 포함하는 것처럼 보이지만 더 나은 방법으로 수행하는 것이 더 좋을 것 같습니다.
고맙습니다 당신의 도움이!
structure(list(startmonth = structure(c(2005, 2005.08333333333,
2005.16666666667, 2005.25, 2005.33333333333, 2005.41666666667,
2005.5, 2005.58333333333, 2005.66666666667, 2005.75, 2005.83333333333,
2005.91666666667, 2006, 2006.08333333333, 2006.16666666667, 2006.25,
2006.33333333333, 2006.41666666667, 2006.5, 2006.58333333333,
2006.66666666667, 2006.75, 2006.83333333333, 2006.91666666667
), class = "yearmon"), monthlyreturns = c(7.60884596500546, 4.31712970370427,
1.7181678651832, 4.86275367671624, 8.06177110411227, 8.07952171890065,
7.45263583026826, 9.86292108893394, 4.06634262995794, 2.36454397207126,
9.12716506049037, 3.72667369898409, 1.2204843852669, 7.80610600719228,
0.640116988215595, 6.94793848553672, 1.73743493855, 2.57189674302936,
4.7653386532329, 1.79362375289202, 7.56623527035117, 2.70907687023282,
4.45359382545575, 5.50409059040248)), .Names = c("startmonth",
"monthlyreturns"), row.names = c(NA, 24L), class = "data.frame")
'for' 루프의 문제점은 무엇입니까? ... 그 외에도 일부 재정 기능을 통해 1 ~ 12 개월의 수익 가치를 계산할 수 있어야합니다 ('CRAN'을 통해 충분히 이용할 수 있음). BTW, 입력의 각 행이 다른 달로 시작하기 때문에 이전 달 동안 출력 열이 0이 되길 원하거나 각 행이 다른 순방향 투영 기간을 다루고 싶습니까? –
plyr가 더 예쁘고 빠릅니다. 미안 해요 : 나는 각 출력 열을 시작 달에 관계없이 앞으로 전달하고 싶습니다. 그래서 2005 년 1 월에 다음 열은 2005 년 2 월까지, 2005 년 2 월에는 2 번째 열은 2005 년 3 월까지입니다. –
'for' 루프와'plyr' 두 가지를 모두 테스트 한 적이 있다면 w/your solution :-)으로 대답하십시오. –