As the footer says, "provide commented, _minimal_, self-contained, reproducible code." This is hardly "minimal" or reproducible.
Anyway, this probably ought to qualify as a plyr FAQ of some sort: don't use the summarise function as the FUN argument within a function. Define a named or anonymous function of your own as the help page for ddply describes. Too many layers of syntactic sugar are involved for summarise to work within a function. --------------------------------------------------------------------------- Jeff Newmiller The ..... ..... Go Live... DCN:<jdnew...@dcn.davis.ca.us> Basics: ##.#. ##.#. Live Go... Live: OO#.. Dead: OO#.. Playing Research Engineer (Solar/Batteries O.O#. #.O#. with /Software/Embedded Controllers) .OO#. .OO#. rocks...1k --------------------------------------------------------------------------- Sent from my phone. Please excuse my brevity. Franckx Laurent <laurent.fran...@vito.be> wrote: >Dear all, > >I am encountering problems with the application of ddply within the >body of a self-defined function. > >The script is the following: > > >moncostcarmoto <- function(costtype){ > costaux_result <- data.frame() > for (purp in PURPcount){for (per in PERcount){ > costcarin = paste(c("CS_",costtype,"CAR"),collapse="") > costmotoin = paste(c("CS_",costtype,"MOTO"),collapse="") > browser() >COSTaux_AVCAR <- >ddply(CARaux,c("SC","YEAR"),summarize,costcsolo = >sum(CARaux[[costcarin]])) >COSTaux_AVMOTO <- >ddply(CARaux,c("SC","YEAR"),summarize,costmoto= >sum(CARaux[[costmotoin]] )) >COSTaux <- >join(COSTaux_AVCAR,COSTaux_AVMOTO,by=c("SC","YEAR")) > COSTaux[ ,"PURP"] <- as.factor(purp) > COSTaux[ ,"PER"] <- as.factor(per) > costaux_result <- rbind(costaux_result,COSTaux) > }} > > return(costaux_result) >} > >Summarizing what it is supposed to do: > > >* In previous step of our analysis, we have constructed a >dataframe, CARaux. CARaux represents different cost categories (fuel >prices, taxes, maintenance) etc for cars and motorcycles. The costs are >differentiated according to the projection year ("YEAR") considered, >the policy scenario considered ("SC") and the car type considered. > >* The function moncostcarmoto takes as only argument one of >four possible aggregate cost types: "MONCOST_EXCLTAX", >"TAX",""FUELCOST" and "MONCOST_INCLTAX"". > >* The output of the function is a summary of the costs per >YEAR and SCENARIO, represented for all possible trip purposes >(enumerated in PURPcount) and period of the day (enumerated in >PERcount). Note that these costs do not depend on PURP and PER in the >base scenario, but this is something I may want to modify in the future >(and which explains why I iterate over these categories). > >The function fails in the following line: > >COSTaux_AVCAR <- >ddply(CARaux,c("SC","YEAR"),summarize,costcsolo = >sum(CARaux[[costcarin]])) > >With the following error message: > >Error in (function(x, i, exact) if (is.matrix(i)) as.matrix(x)[[i]] >else .subset2(x, : > object 'costcarin' not found > >When I debugged the function, I found the following: > >Browse[1]> costcarin >[1] "CS_MONCOST_EXCLTAXCAR" >Browse[1]> summary(CARaux[[costcarin]]) > Min. 1st Qu. Median Mean 3rd Qu. Max. >0.0000000 0.0000000 0.0001605 0.0166700 0.0048570 0.1633000 >Browse[1]> COSTaux_AVCAR <- >ddply(CARaux,c("SC","YEAR"),summarize,costcsolo = >sum(CARaux[["CS_MONCOST_EXCLTAXCAR"]])) >Browse[1]> summary(COSTaux_AVCAR) > SC YEAR costcsolo > BAU:31 Min. :2000 Min. :6.202 > 1st Qu.:2008 1st Qu.:6.202 > Median :2015 Median :6.202 > Mean :2015 Mean :6.202 > 3rd Qu.:2022 3rd Qu.:6.202 > Max. :2030 Max. :6.202 >Browse[1]> COSTaux_AVCAR <- >ddply(CARaux,c("SC","YEAR"),summarize,costcsolo = >sum(CARaux[[costcarin]])) >Error in (function(x, i, exact) if (is.matrix(i)) as.matrix(x)[[i]] >else .subset2(x, : > object 'costcarin' not found > > >Thus, providing CARaux[["CS_MONCOST_EXCLTAXCAR"]] as an argument to >ddply() works, but CARaux[[costcarin]] does not, although costcarin = >"CS_MONCOST_EXCLTAXCAR". > > >Best regards >Laurent > > > > > >________________________________ >VITO Disclaimer: http://www.vito.be/e-maildisclaimer > > [[alternative HTML version deleted]] > >______________________________________________ >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. ______________________________________________ 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.