[R] how to use "..."

Ivan Calandra ivan.calandra at u-bourgogne.fr
Thu Jan 31 16:55:21 CET 2013


Thanks Bert for your example.
I wouldn't say that I understand why everything happens the way it does, 
but at least I now know what happens!
I think I now need to use it and try around!

Ivan

--
Ivan CALANDRA
Université de Bourgogne
UMR CNRS/uB 6282 Biogéosciences
6 Boulevard Gabriel
21000 Dijon, FRANCE
+33(0)3.80.39.63.06
ivan.calandra at u-bourgogne.fr
http://biogeosciences.u-bourgogne.fr/calandra

Le 30/01/13 18:44, Bert Gunter a écrit :
> Because R can be interactive, I find that a little exploring through
> the use of strategically placed browser() calls (?browser if you are
> unfamiliar with this handy debugging tool) is often the fastest way to
> solve little R puzzles like this.
>
> For example, try this (in an R GUI):
>
> f2 <- function(y,...){ browser(); list(...) }
> f1 <- function(x,...){ browser(); f2(x,...) }
>
> Now at the command line:
>
>> f1( x=1, z= 2:4)
> ## In the f1 browser  do ls() to see what's in the f1 environment
> ## and then do list(...) to see what's in the dots argument
> ## then issue the browser command  c  to continue
> ## and do the same in the f2 browser .
>
> ## then try:
>> f1( x=1, y= 2:4)  ## and
>> f1( 2:4)
>> f1( y=2:4) ## this will produce an error in f2
> I think this help give you a better idea of what's going on (or
> totally confuse?!).
>
> -- Bert
>
>
>
>
> On Wed, Jan 30, 2013 at 8:15 AM, Patrick Burns <pburns at pburns.seanet.com> wrote:
>> There is now a blog post that attempts to
>> answer the question in the subject line:
>>
>> http://www.burns-stat.com/the-three-dots-construct-in-r/
>>
>> Pat
>>
>> On 17/01/2013 14:36, Ivan Calandra 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)
>>> }
>>>
>>> Example, works fine:
>>> my_data <- structure(list(cat = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L,
>>> 2L, 2L, 2L), .Label = c("A", "B"), class = "factor"), varnum =
>>> c(-0.754816565434373,
>>> -1.94101630973709, -0.102461836059522, -0.519952759645808,
>>> -1.73772800855664,
>>> -1.13939178585609, 0.522356715260142, -0.701428514907824,
>>> 1.45197576541159,
>>> 0.0844567413828095)), .Names = c("cat", "varnum"), row.names = c(NA,
>>> -10L), class = "data.frame")
>>> stat.group(dat=my_data, vec_cat=1, stat_fun=mean)
>>>
>>>
>>> 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)
>>>
>>>
>>> I know I can do it using this "..." but I have no idea how to do it.
>>> I've tried to search for it, but a search with "..." doesn't yield
>>> interesting results!
>>>
>>>
>>> Thank you in advance for your help!
>>> Ivan
>>>
>> --
>> Patrick Burns
>> pburns at pburns.seanet.com
>> twitter: @burnsstat @portfolioprobe
>> http://www.portfolioprobe.com/blog
>> http://www.burns-stat.com
>> (home of:
>>   'Impatient R'
>>   'The R Inferno'
>>   'Tao Te Programming')
>>
>> ______________________________________________
>> R-help at 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.
>
>



More information about the R-help mailing list