How to use R's ellipsis feature when writing your own function?
        Posted  
        
            by Ryan Thompson
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Ryan Thompson
        
        
        
        Published on 2010-06-16T21:31:41Z
        Indexed on 
            2010/06/16
            21:32 UTC
        
        
        Read the original article
        Hit count: 323
        
The R language has a nifty feature for defining functions that can take a variable number of arguments. For example, the function data.frame takes any number of arguments, and each argument becomes the data for a column in the resulting data table. Example usage:
> data.frame(letters=c("a", "b", "c"), numbers=c(1,2,3), notes=c("do", "re", "mi"))
  letters numbers notes
1       a       1    do
2       b       2    re
3       c       3    mi
The function's signature includes an ellipsis, like this:
function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, 
    stringsAsFactors = default.stringsAsFactors()) 
{
    [FUNCTION DEFINITION HERE]
}
I would like to write a function that does something similar, taking multiple values and consolidating them into a single return value (as well as doing some other processing). In order to do this, I need to figure out how to "unpack" the ... from the function's arguments within the function. I don't know how to do this. The relevant line in the function definition of data.frame is object <- as.list(substitute(list(...)))[-1L], which I can't make any sense of.
So how can I convert the ellipsis from the function's signature into, for example, a list?
To be more specific, how can I write get_list_from_ellipsis in the code below?
my_ellipsis_function(...) {
    input_list <- get.list.from.ellipsis(...)
    output_list <- lapply(X=input_list, FUN=do_something_interesting)
    return(output_list)
}
my_ellipsis_function(a=1:10,b=11:20,c=21:30)
© Stack Overflow or respective owner