Folks,

I call the function calcAmorts like so:
        calcAmorts(prevAm, amort, myDates)

Note that I use the package lubridate.

The last line where do.call is called to first divide all the rows by the first 
row and then rbind gives the following error:
    Error in do.call("rbind", apply(amortsByYears, 1, "/", amortsByYears[,  : 
    second argument must be a list

By contrast if I run 
do.call('rbind', apply(amortsByYears, 1, "/", amortsByYears[,1]))

On its own with any kind of numeric data.frame the call works fine. That is it 
divides every row in the data.frame by the first row.

Thanks so much for your time,
KW

_____________
My data:

myDates<-structure(c(1338523200, 1341115200, 1343793600, 1346472000, 
1349064000, 
1351742400, 1354334400, 1357012800, 1359691200, 1362110400, 1364788800, 
1367380800, 1370059200, 1372651200, 1375329600, 1378008000, 1380600000, 
1383278400, 1385870400), class = c("POSIXct", "POSIXt"))



amort<-structure(c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0333, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0333, 
0, 0, 0.0333, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0.0333, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0.0333, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0357142857142857, 
0, 0, 0, 0, 0.0333, 0, 0, 0.0333, 0, 0, 0.0357142857142857, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0333, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0333, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0357142857142857, 0, 0, 0, 0, 0.0333, 
0, 0, 0.0333, 0, 0, 0.0357142857142857, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0.0333, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0), .Dim = c(10L, 19L))

prevAm<-c(0, 0, 0, 0.0666, 0, 0.0666, 0.0666, 0, 0, 0)

calcAmorts<-function(prevAmort,  currAmorts, dates) {
   yrs<-year(as.Date(dates))
   currAmorts<-data.frame(yrs,t(currAmorts))
   amortsByYears<-aggregate(x = currAmorts, by = list(yrs), FUN = 
"sum")[,-c(1,2)]
   amortsByYears<-rbind(prevAmort, amortsByYears)
   amortsByYears<-(1-apply(amortsByYears, 2, cumsum))[-1,]

  do.call('rbind', apply(amortsByYears, 1, "/", amortsByYears[,1]))

}

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to