関数から可変数の引数を C/C++ に渡したいのですが、引数を評価せずに残しておき、同時に R で計算を実行したくありません (C/C++ の呼び出しは別として)。つまりsubstitute
、R 関数を呼び出したくありません。私が使用できると思ったこのための1つのオプションは.External
、次のようにsmthを行うことです:
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
。