title: Calculating the annualized internal rate of return
body: <p>How would i write a simple function to calculate the annualized internal rate of return for the below dates and payments in csv form:</p>
  
  <pre><code>19/10/2003  -13275
  19/11/2003  940.49
  19/12/2003  884.71
  19/01/2004  832.11
  19/02/2004  782.49
  19/03/2004  735.74
  19/04/2004  691.64
  19/05/2004  650.09
  19/06/2004  610.91
  19/07/2004  573.99
  19/08/2004  539.2
  19/09/2004  506.42
  19/10/2004  475.54
  19/11/2004  441.05
  19/12/2004  413.91
  19/01/2005  388.37
  19/02/2005  364.31
  19/03/2005  341.66
  19/04/2005  320.34
  19/05/2005  300.28
  19/06/2005  281.39
  19/07/2005  263.63
  19/08/2005  246.91
  19/09/2005  231.2
  19/10/2005  216.41
  19/11/2005  202.51
  19/12/2005  189.43
  19/01/2006  177.15
  19/02/2006  165.6
  19/03/2006  154.75
  19/04/2006  144.55
  19/05/2006  134.98
  19/06/2006  125.99
  19/07/2006  117.55
  19/08/2006  109.62
  19/09/2006  102.18
  </code></pre>
  
  <pre><code> C &lt;- c(-13275, 940.49, 884.71, 832.11, 782.49, 735.74, 691.64, 650.09, 610.91, 573.99, 539.20, 506.42, 475.54, 441.05, 413.91, 388.37, 364.31, 341.66, 320.34, 300.28, 281.39, 263.63, 246.91, 231.20, 216.41, 202.51, 189.43, 177.15, 165.60, 154.75, 144.55, 134.98, 125.99, 117.55, 109.62, 102.18) 
  
  D &lt;- c("19-10-2003", "19-11-2003", "19-12-2003", "19-01-2004", "19-02-2004", "19-03-2004", "19-04-2004", "19-05-2004", "19-06-2004", "19-07-2004", "19-08-2004", "19-09-2004", "19-10-2004", "19-11-2004", "19-12-2004", "19-01-2005", "19-02-2005, "19-03-2005", "19-04-2005", "19-05-2005", "19-06-2005", "19-07-2005", "19-08-2005", "19-09-2005", "19-10-2005", "19-11-2005", "19-12-2005", "19-01-2006", "19-02-2006", "19-03-2006", "19-04-2006", "19-05-2006", "19-06-2006", "19-07-2006", "19-08-2006","19-09-2006")
  </code></pre>
  
  <p>I am new to R and desperate for some assistance with this problem. Once i have obtained the function i am required to create a package that will convert a csv into a single numeric vector which outputs the IRR for that cashflow.</p>
  
  <p>I have already tried using the uniroot function but cannot seem to get the correct answer of 2.9%</p>
  
  <pre><code>npv &lt;- function(i, cf, t=seq(along=cf)) sum(cf/(1+i)^t) 
   irr &lt;- function(cf) { uniroot(npv, c(0,1), cf=cf)$root } 
   irr(cf)
  </code></pre>
  
  <p>and have looked at </p>
  
  <pre><code>NPV&lt;-function(paym,pdates,IRR){
     ptimes&lt;-as.Date(pdates)-min(as.Date(pdates))
     ptimes&lt;-as.numeric(ptimes,units="days")/365.25
     NPV&lt;-sum(paym*(1+IRR)^{-ptimes})
     NPV
  }
  
  nlm(function(p){NPV(c(lumpsum,df$pmts),c(today,df$date),p)^2},p=0.1)
  </code></pre>
  
  <p>But cannot seem to work out how this could be applied to my problem.</p>