I am looking for a universal way to change a value of an argument inside ellipsis and pass it to the other function. I know an ugly solution for that, which looks like this:
test <- function(...) {
a <- list(...)
a[['y']] <- 2
return(eval(parse(text=paste0('identical(',paste(unlist(a),collapse=','),')'))))
}
test(x=1,y=1)
Ideally I would like to avoid converting ... to a list and then using eval(). Is it possible to somehow refer to an argument inside ... by name and change it's value?
You do have to unpack ...
to manipulate its contents. The ugly bit here, really, is your last line, which can be simplified to do.call(identical, a)
:
test <- function(...) {
a <- list(...)
a[['y']] <- 2
do.call(identical, a)
}
test(x=1,y=1)
# [1] FALSE