Loop - Ersatz hat die Länge null

Ich habe ein kleines problem mit einer Schleife. Hier ist der code der Schleife:

for(i in 1:40) {
   ret1 <- sample(vec, 40, replace=T)
     if (i == 1) {
       val[i] = Put[i]*(1+ret1[i])
     } else (i > 1) 
     val[i] = ((val[i-1])+Put[i])*(1+ret1[i])
 }

Die Fehlermeldung die ich erhalte ist folgende:

 Error in val[i] = ((val[i - 1]) + Put[i]) * (1 + ret1[i]) : 
 replacement has length zero

Hier ist der input-Daten:

val: is an empty shell to store values in 

vec <- c(43.81, -8.3, -25.12, -43.84, -8.64, 49.98, -1.19, 46.74, 31.94, 
-35.34, 29.28, -1.1, -10.67, -12.77, 19.17, 25.06, 19.03, 35.82, 
-8.43, 5.2, 5.7, 18.3, 30.81, 23.68, 18.15, -1.21, 52.56, 32.6, 
7.44, -10.46, 43.72, 12.06, 0.34, 26.64, -8.81, 22.61, 16.42, 
12.4, -9.97, 23.8, 10.81, -8.24, 3.56, 14.22, 18.76, -14.31, 
-25.9, 37, 23.83, -6.98, 6.51, 18.52, 31.74, -4.7, 20.42, 22.34, 
6.15, 31.24, 18.49, 5.81, 16.54, 31.48, -3.06, 30.23, 7.49, 9.97, 
1.33, 37.2, 22.68, 33.1, 28.34, 20.89, -9.03, -11.85, -21.97, 
28.36, 10.74, 4.83, 15.61, 5.48, -36.55, 25.94, 14.82, 2.07, 
15.83)

Put = c(6180, 6365.4, 6556.362, 6753.05286, 6955.6444458, 7164.313779174, 
7379.24319254922, 7600.6204883257, 7828.63910297547, 8063.49827606473, 
8305.40322434668, 8554.56532107708, 8811.20228070939, 9075.53834913067, 
9347.80449960459, 9628.23863459273, 9917.08579363051, 10214.5983674394, 
10521.0363184626, 10836.6674080165, 11161.767430257, 11496.6204531647, 
11841.5190667596, 12196.7646387624, 12562.6675779253, 12939.5476052631, 
13327.7340334209, 13727.5660544236, 14139.3930360563, 14563.574827138, 
15000.4820719521, 15450.4965341107, 15914.011430134, 16391.431773038, 
16883.1747262292, 17389.669968016, 17911.3600670565, 18448.7008690682, 
19002.1618951403, 19572.2267519945)

Was mache ich falsch /nicht verstehen Schleifen?

Dem Ziel, all dies ist zur Berechnung der historischen Rendite bei einer Investition über die Zeit. Ich planen Investitionen X Menge an Geld jedes Jahr, und es gibt eine bestimmte Rendite auf die Investition. Darüber hinaus werden die Investitionen die Investitionen der Compoundierung.

Bitte geben Sie eine reproduzierbare code. Das bedeutet, dass die Daten als gut. Und es würde helfen, wenn Sie erklären, was Sie versuchen zu tun, (in Worten), wie die Leute hier dazu beitragen kann schneller / besser / sicherer Lösungen (das wird auch Ihnen helfen, und andere).
Danke @Arun, dass eine notwendige Beratung!
else (i > 1) sollte else if (i > 1). Ich denke, dass ist dein problem.

InformationsquelleAutor user1738753 | 2013-06-16

Schreibe einen Kommentar