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
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