I have if...else function to replace the value of survival rate for 28 periods, I think it stop replacing any value after row 2. As a result, "number of items to replace is not a multiple of replacement length".
Survival.rate[nperiod, ] = Survival.rate[nperiod - 1,] * Retention.Rate           
Error in annual.profit[nperiod, ] = annual.profit * Survival.rate[nperiod, : number of items to replace is not a multiple of replacement length
nperiods = 28   
Survival.rate = matrix(0, nrow=nperiods, ncol=5)
annual.profit = matrix(0, nrow=nperiods, ncol=5)
dis.annual.profit = matrix(0, nrow=nperiods, ncol=5)
for (nperiod in 1:nperiods) {
  if (nperiod==1) {
    Survival.rate[nperiod, ] = 1
    # calculate annual profit for year.one
    annual.profit[nperiod, ] = Annual.Margin-Acquisition.Cost
  } 
  else {
    Survival.rate[nperiod, ] = Survival.rate[nperiod - 1,] * Retention.Rate 
    annual.profit[nperiod, ] = annual.profit * Survival.rate[nperiod, ]
  }
  dis.annual.profit[nperiod, ] =  annual.profit[
    nperiod, ] / (1+interest.rate)^(nperiod)
}`
 
    