Assume zero contribution at the beginning. We have the following parameters

C = Constant

R = 6
Y = 30
C = 1000

For example, what’s the total amount in your retirement account at the end of month 1? It’s just \(C\) .

What’s the total amount in your retirement account at the end of month 2?

C * (1 + R/12/100) + C

Now write a function to return the total amount in your retirement account at the end of year \(Y\)

T = Y * 12
total = 0

for(i in 1:T)
  total = total * (1 + R/12/100) + C

total

To Do

Rvalues = seq(1, 10, by = 0.5) 
Rvalues
length(Rvalues)

Your code would look like this

# Continue with the definition of Rvalues above

m = length(Rvalues)
totals = rep(0, m)
for (t in 1:m){
  R = Rvalues[m]
  
  totals[m] = # your function
}

plot(Rvalues, totals) # check ggplot package

C = Contribution Rate

Now, we consider a case where the monthly contribution amount varies from year to year since it’s specified as a percentage of one’s monthly salary.

Your code would look like this

# m0 = initial salary
# c.rate = contribution rate
# a.rate = salary increase rate

# R = annual investment return rate 
# Y = service year

total  = 0
for(i in 1:Y){
  
#  current.m = salary in year t
#  current.C = contribution amount in year t
  
  for(j in 1:12){
# calculate total for each month
  }
}

total
[1] 0
LS0tCnRpdGxlOiAiQ2FsY3V0ZSBSZXR1cm4iCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCkFzc3VtZSB6ZXJvIGNvbnRyaWJ1dGlvbiBhdCB0aGUgYmVnaW5uaW5nLiBXZSBoYXZlIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVycwoKLSAgIEFubnVhbCByZXR1cm4gcmF0ZSAkUiQgKGluIHBlcmNlbnRhZ2UpCgotICAgWWVhcnMgJFkkCgotICAgTW9udGhseSBjb250cmlidXRpb24gJEMkIChhbHdheXMgY29udHJpYnV0ZSBhdCB0aGUgZW5kIG9mIGEgbW9udGgpCgojIyBDID0gQ29uc3RhbnQKCmBgYHtyfQpSID0gNgpZID0gMzAKQyA9IDEwMDAKYGBgCgpGb3IgZXhhbXBsZSwgd2hhdCdzIHRoZSB0b3RhbCBhbW91bnQgaW4geW91ciByZXRpcmVtZW50IGFjY291bnQgYXQgdGhlIGVuZCBvZiBtb250aCAxPyBJdCdzIGp1c3QgJEMkIC4KCldoYXQncyB0aGUgdG90YWwgYW1vdW50IGluIHlvdXIgcmV0aXJlbWVudCBhY2NvdW50IGF0IHRoZSBlbmQgb2YgbW9udGggMj8KCmBgYHtyfQpDICogKDEgKyBSLzEyLzEwMCkgKyBDCmBgYAoKTm93IHdyaXRlIGEgZnVuY3Rpb24gdG8gcmV0dXJuIHRoZSB0b3RhbCBhbW91bnQgaW4geW91ciByZXRpcmVtZW50IGFjY291bnQgYXQgdGhlIGVuZCBvZiB5ZWFyICRZJAoKYGBge3J9ClQgPSBZICogMTIKdG90YWwgPSAwCgpmb3IoaSBpbiAxOlQpCiAgdG90YWwgPSB0b3RhbCAqICgxICsgUi8xMi8xMDApICsgQwoKdG90YWwKYGBgCgoqKlRvIERvKioKCi0gICBXcml0ZSBhIGZ1bmN0aW9uIHRoYXQgY2FuIHRha2UgJFIsIFksIEMkIGFzIGlucHV0IGFuZCBvdXRwdXQgdG90YWwgaW52ZXN0bWVudCBhbW91bnQKLSAgIEZpeCAkWSQgYW5kICRDJCwgdmFyeSAkUiQgZnJvbSAxJSB0byAxMCUgd2l0aCBhbiBpbmNyZWFzZSBvZiAwLjUlLCBpLmUuLCB5b3UnbGwgdHJ5ICRSJCBiZWluZyAxJSwgMS41JSwgMiUsIC4uLiwgYW5kIGdvIG9uLiBUcnkgdGhvc2UgJFIkIHZhbHVlcyBhbmQgZWFjaCB3aWxsIHJldHVybiB5b3UgYSB0b3RhbC4gUHJvZHVjZSBhIHBsb3Qgb2YgdG90YWwgdnMgJFIkCgpgYGB7cn0KUnZhbHVlcyA9IHNlcSgxLCAxMCwgYnkgPSAwLjUpIApSdmFsdWVzCmxlbmd0aChSdmFsdWVzKQpgYGAKCllvdXIgY29kZSB3b3VsZCBsb29rIGxpa2UgdGhpcwoKYGBge3IsIGV2YWwgPSBGQUxTRX0KCiMgQ29udGludWUgd2l0aCB0aGUgZGVmaW5pdGlvbiBvZiBSdmFsdWVzIGFib3ZlCgptID0gbGVuZ3RoKFJ2YWx1ZXMpCnRvdGFscyA9IHJlcCgwLCBtKQpmb3IgKHQgaW4gMTptKXsKICBSID0gUnZhbHVlc1ttXQogIAogIHRvdGFsc1ttXSA9ICMgeW91ciBmdW5jdGlvbgp9CgpwbG90KFJ2YWx1ZXMsIHRvdGFscykgIyBjaGVjayBnZ3Bsb3QgcGFja2FnZQoKYGBgCgoKIyMgQyA9IENvbnRyaWJ1dGlvbiBSYXRlCgpOb3csIHdlIGNvbnNpZGVyIGEgY2FzZSB3aGVyZSB0aGUgbW9udGhseSBjb250cmlidXRpb24gYW1vdW50IHZhcmllcyBmcm9tIHllYXIgdG8geWVhciBzaW5jZSBpdCdzIHNwZWNpZmllZCBhcyBhIHBlcmNlbnRhZ2Ugb2Ygb25lJ3MgbW9udGhseSBzYWxhcnkuIAoKWW91ciBjb2RlIHdvdWxkIGxvb2sgbGlrZSB0aGlzCgpgYGB7ciBldmF1bGUgPSBGQUxTRX0KIyBtMCA9IGluaXRpYWwgc2FsYXJ5CiMgYy5yYXRlID0gY29udHJpYnV0aW9uIHJhdGUKIyBhLnJhdGUgPSBzYWxhcnkgaW5jcmVhc2UgcmF0ZQoKIyBSID0gYW5udWFsIGludmVzdG1lbnQgcmV0dXJuIHJhdGUgCiMgWSA9IHNlcnZpY2UgeWVhcgoKdG90YWwgID0gMApmb3IoaSBpbiAxOlkpewogIAojICBjdXJyZW50Lm0gPSBzYWxhcnkgaW4geWVhciB0CiMgIGN1cnJlbnQuQyA9IGNvbnRyaWJ1dGlvbiBhbW91bnQgaW4geWVhciB0CiAgCiAgZm9yKGogaW4gMToxMil7CiMgY2FsY3VsYXRlIHRvdGFsIGZvciBlYWNoIG1vbnRoCiAgfQp9CgoKYGBgCgo=