是否有 parent.framesys.calls 或其他一般上下文函数的版本可以直接从 .Call 调用的C代码调用?环顾 Rinternals.h 等,我似乎找不到任何类似的东西 . 我能想到的最好的是:

my_fun <- function(x) {
   .Call(my_fun_C, substitute(x), parent.frame(), sys.calls())
}

但理想情况下,我宁愿避免R调用 substituteparent.frame 等,直接从C.做那些 . 为什么?这些函数调用中的每一个都会对 my_fun 的评估增加300ns,而且不知道是否有办法避免它或者我是否坚持使用上述函数 .

函数 do_sys 中有来自 main/context.c 的这种诱人的代码:

RCNTXT *cptr;

cptr = R_GlobalContext;
t = cptr->sysparent;

RCNTXTincludes/Defn.h 中定义, Defn.h 看起来是内部非导出 Headers .