David,
why not
call[[1]] <- parse_args
The assignment is evaluated in your namespace so that makes sure the call
is that of your function. The only downside I see is that in a stack trace
you'll see the definition instead of the name.
Or possibly
do.call(parse_args, as.list(call[-1]))
Cheers,
Simon
PS: Note that ::: is expensive - it probably doesn't matter here, but
would in repeatedly called functions.
On 15/12/2022, at 12:19 PM, David Kepplinger <david.kepplinger at gmail.com>
Dear List,
I am working on updating the pense package and refactored some of the
methods. I have several functions which take the same arguments, hence
sending all these arguments to an internal function, called
Since I want to evaluate the arguments in the caller's environment, I'm
using the following code
call <- match.call(expand.dots = TRUE)
call[[1]] <- quote(pense:::parse_args)
args <- eval.parent(call)
Of course, R CMD CHECK complains about the use of `:::`, as it's almost
never needed. I think the above usage would fall into that area of
"almost", but I'm not sure if (a) there's a better approach and (b) the
CRAN team would agree with me. I would have to test (b) by submitting and
working with the CRAN team, but I wanted to ask the list first to see if
I'm missing something obvious. I don't want to export the function
parse_args() as it's not useful for a user, and the use is truly
Thanks and all the best,
David
[[alternative HTML version deleted]]