我想将可变数量的参数从函数传递给 C/C++,但希望不计算参数,同时不想在 R 中进行任何计算(除了调用 C/C++函数),即我不想调用substitute
我的 R 函数。我认为我可以使用的一个选项是.External
像这样做:
R_fn = function(...) .External("cpp_fn", ...)
...
# and in C code:
SEXP cpp_fn (SEXP arglist) {
}
但是.External
正在评估参数...
,所以如果我尝试类似
rm(x, y) # just making sure these don't exist
R_fn(x*y)
我收到一个错误,因为 R 试图在将其发送到函数x*y
之前进行评估。
相比之下,以下在 R 中有效:
f = function(...) g(...)
g = function(x, ...) print(substitute(x))
f(x*y*z)
# x * y * z
我还有什么其他选择?显然,可以像 R 本身为许多功能(例如substitute
它自己)所做的那样做,但我不明白该怎么做。我添加了这个rcpp
标签,因为我最终会在Rcpp
.