是否有 parent.frame
或 sys.calls
或其他一般上下文函数的版本可以直接从 .Call
调用的C代码调用?环顾 Rinternals.h
等,我似乎找不到任何类似的东西 . 我能想到的最好的是:
my_fun <- function(x) {
.Call(my_fun_C, substitute(x), parent.frame(), sys.calls())
}
但理想情况下,我宁愿避免R调用 substitute
, parent.frame
等,直接从C.做那些 . 为什么?这些函数调用中的每一个都会对 my_fun
的评估增加300ns,而且不知道是否有办法避免它或者我是否坚持使用上述函数 .
函数 do_sys
中有来自 main/context.c
的这种诱人的代码:
RCNTXT *cptr;
cptr = R_GlobalContext;
t = cptr->sysparent;
但 RCNTXT
在 includes/Defn.h
中定义, Defn.h
看起来是内部非导出 Headers .