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
... argument is a special argument useful for passing an unknown number of arguments to another function. This is widely used in R, especially in generic functions such as. plot()
If you have used R before, then you surely have come across the three dots, e.g. In technical language, this is called an ellipsis. And it means that the function is designed to take any number of named or unnamed arguments. By the way, the ellipsis is not a specialty of R.
Try this:
test<-function(x,y,...)
{
mc <- match.call(expand.dots = FALSE)
mc$...
}
v1=11
v2=10
test(12,12,v1,v2)
[[1]]
v1
[[2]]
v2
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"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With