Hi Ben, How about something like this:
f <- function(x, y = NULL) { if (is.null(y)) y <- x x + y } > f(3, 4) [1] 7 > f(3) [1] 6 Regards, Marc Schwartz > On Jun 20, 2020, at 7:15 AM, Benjamin Tyner <bty...@gmail.com> wrote: > > Greetings, > > Occasionally, I desire to call a function with one argument set to equal to > another. Here is a toy example: > > f <- function(x, y) { > > x + y > } > > f(x = 3, y = x) # Error in f(x = 3, y = x) : object 'x' not found > > So far, the most concise way I found to accomplish this is: > > f(x = 3, y = local(sys.frame(1)$x)) # evaluates to 6 > > but I dislike this solution because local() creates a new environment. Surely > there must be a better way? > > Note: I'm not interested in solutions that require modifying or currying f. > > Regards, > Ben > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.