On Thu, Jan 17, 2013 at 2:36 PM, Ivan Calandra <ivan.calan...@u-bourgogne.fr> wrote: > Dear users, > > I'm trying to learn how to use the "...". > > I have written a function (simplified here) that uses doBy::summaryBy(): > # 'dat' is a data.frame from which the aggregation is computed > # 'vec_cat' is a integer vector defining which columns of the data.frame > should be use on the right side of the formula > # 'stat_fun' is the function that will be run to aggregate > stat.group <- function(dat, vec_cat, stat_fun){ > require(doBy) > df <- > summaryBy(as.formula(paste0(".~",paste0(names(dat)[vec_cat],collapse="+"))), > data=dat, FUN=stat_fun) > return(df) > } > [SNIP EXAMPLE -- THANK YOU FOR IT] > > Now summaryBy() has an "..." argument and I would like to use it. > For example, I would like to be able to add the trim argument to my call > like this: > stat.group(dat=my_data, vec_cat=1, stat_fun=mean, trim=0.2) > >
Thanks for the great working examples! It's actually not too hard here -- just pass "..." down as if it were an argument and let summaryBy() do the hard work of actually handling the dots: stat.group <- function(dat, vec_cat, stat_fun, ...){ require(doBy) df <- summaryBy(as.formula(paste0(".~",paste0(names(dat)[vec_cat],collapse="+"))), data=dat, FUN=stat_fun, ...) return(df) } Also, note that as a matter of style, you can actually clean this up a little bit: R follows the trend of many functional languages in automatically returning the value of the last expression evaluated: stat.group <- function(dat, vec_cat, stat_fun, ...){ require(doBy) summaryBy(as.formula(paste0(".~",paste0(names(dat)[vec_cat],collapse="+"))), data=dat, FUN=stat_fun, ...) } Cheers, Michael ______________________________________________ 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.