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.
Rscript_call(
fun,
args = list(),
options = NULL,
...,
wait = TRUE,
fail = sprintf("Failed to run '%s' in a new R session", deparse(substitute(fun))[1])
)
A function, or a character string that can be parsed and evaluated to a function.
A list of argument values.
A character vector of options to passed to Rscript()
, e.g.,
"--vanilla"
.
Arguments to be passed to system2()
.
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.
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.
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