I'm wrapping a function in R and I want to record all the arguments
passed to it, including default values and missing values. I want to
be able to snoop on function calls in sourced scripts as part of a
unit testing framework.

I can capture the values fine, but I'm having trouble evaluating them
as if `force()` had been applied to each of them.

Here is a minimal example:

f0 <- function(x, y = 2 * z, z, a = NULL, b) NULL

f <- function(...) {
  call <- rlang::call_match(fn = f0, defaults = TRUE)
  args <- rlang::call_args(call)
  # do something here to evaluate args as if force() had been called
  # I've tried many things but haven't found a solution that handled everything
  args
}

# In the below example args1 and args2 should be the same
a <- 1
args1 <- f(a, z = 1 + 100)

args2 <- list( a = 1, y = 202, z = 101, a = NULL, b = rlang::missing_arg() )

If anyone knows how to get this to work, I would appreciate the help.

Thanks,
Reed

--
Reed A. Cartwright, PhD
Associate Professor of Genomics, Evolution, and Bioinformatics
School of Life Sciences and The Biodesign Institute
Arizona State University
==================
Address: The Biodesign Institute, PO Box 876401, Tempe, AZ 85287-6401 USA
Packages: The Biodesign Institute, 1001 S. McAllister Ave, Tempe, AZ
85287-6401 USA
Office: Biodesign B-220C, 1-480-965-9949
Website: http://cartwrig.ht/

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

Reply via email to