Save the argument values of a function in a temporary RDS file, open a new R
session via Rscript(), read the argument values, call the function, and
read the returned value back to the current R session.
Usage
Rscript_call(
fun,
args = list(),
options = NULL,
...,
wait = TRUE,
fail = sprintf("Failed to run '%s' in a new R session", deparse(substitute(fun))[1])
)Arguments
- fun
A function, or a character string that can be parsed and evaluated to a function.
- args
A list of argument values.
- options
A character vector of options to passed to
Rscript(), e.g.,"--vanilla".- ..., wait
Arguments to be passed to
system2().- fail
The desired error message when an error occurred in calling the function. If the actual error message during running the function is available, it will be appended to this message.
Value
If wait = TRUE, the returned value of the function in the new R
session. If wait = FALSE, three file paths will be returned: the first
one stores fun and args (as a list), the second one is supposed to
store the returned value of the function, and the third one stores the
possible error message.
Examples
factorial(10)
#> [1] 3628800
# should return the same value
xfun::Rscript_call("factorial", list(10))
#> [1] 3628800
# the first argument can be either a character string or a function
xfun::Rscript_call(factorial, list(10))
#> [1] 3628800
# Run Rscript starting a vanilla R session
xfun::Rscript_call(factorial, list(10), options = c("--vanilla"))
#> [1] 3628800