Search code examples
rellipsis

How to get names of dot-dot-dot arguments in R


How obtaining a characters vector containing the name of the dot-dot-dot arguments passed to a function e.g.:

test<-function(x,y,...)
{
    varnames=deparseName(substitute(list(...)))
    # deparseName does not exist, this is what I want !
    # so that I could *for example* call:

    for(elt in varnames)
       {print(varnames);}
}

v1=11
v2=10
test(12,12,v1,v2)

## would print 
#v1
#v2

Solution

  • You can use deparse and substitute to get what you want (see also this Q&A):

    test<-function(x, y, ...)
    {
        varnames=lapply(substitute(list(...))[-1], deparse)
        lapply(varnames, print)
        return(invisible())
    }
    
    test(12,12,v1,v2)
    #[1] "v1"
    #[1] "v2"