How to expand an ellipsis (...) argument without evaluating it in R
ellipsis, lazy-evaluation, r
Solution
The most idiomatic way is:
f <- function(x, y, ...) {
match.call(expand.dots = FALSE)$`...`
}
Problem
I need a function that accepts an arbitrary number of arguments and stores them in a variable as an expression without evaluating them. I managed to do it with `match.call` but it seems a little "kludgy". ``` foo <- function(...) { expr <- match.call() expr[[1]] <- expression expr <- eval(expr) # do some stuff with expr return(expr) } > bla Error: object 'bla' not found > foo(x=bla, y=2) expression(x = bla, y = 2) ``` Clarification To clarify, I'm asking how to write a function that behaves like `expression()`. I can't use `expression()` directly for reasons that are too long to explain.