私はいくつかの R コードを持っていますが、これはやや遅いので、「インライン」ライブラリを使用して R コードに直接 C++ コードを書き込もうとしています。
これはうまく機能し、私は今それを調整しようとしています。
Rで「結果」データ構造を割り当て、これらを関数パラメーターとしてc関数に渡す場合にのみ、機能させることができました。メモリが割り当てられ、R ではなく c/c++ から返されるように、R コードに非 void c/c++ 関数を含めることが可能かどうか疑問に思っています。
以下の例を参照してください。
library(inline)
cppSig <- signature(res="numeric",ary="numeric",len="integer")
cppBody <- "
int lens=len[0];
res[0]=0;
for(int j=0;j<lens;j++)
res[0] += ary[j];
res[0] /= (double) lens;
#if 0 //Is something like this possible?
double *rary = new double[lens];
for(int i=0;i<lens;i++) rary[i] = ary[i]-res[0];
return rary;
#endif
"
cfun <- cfunction( sig=list(myMean=cppSig),
body=list(cppBody),verbose=T,
convention=".C", cxxargs="-O3", cppargs="-O3",language="C++")
cfunWrap <- function(x)
cfun$myMean(res=0,ary=x,length(x))$res
cfunWrap(x=rnorm(100))
ありがとう