私はrの関数をRcppに変換しようとしています。途中で、私はベクトルのエントリの平均を計算する必要があります。これは、Rは平均(x)と同じくらいシンプルですが、Rcppでは機能しないように見え、毎回結果として0を返します。ベクトル平均のRcpp
cppFunction(
"NumericVector fun(int n, double lambda, ...) {
...
NumericVector y = rpois(n, lambda);
NumericVector w = dpois(y, lambda);
NumericVector x = w*y;
double z = mean(x);
return z;
}")
編集:だから私は私のエラーは前述したものが原因だと思った、とZのシングル、ダブルのリターンは私が問題を特定しようとしている
私のコードは次のようになります。次のコードは、しかし、まだ動作しません:
cppFunction(
"NumericVector zstat(int n, double lambda, double lambda0, int m) {
NumericVector z(m);
for (int i=1; i<m; ++i){
NumericVector y = rpois(n, lambda0);
NumericVector w = dpois(y, lambda)/dpois(y,lambda0);
double x = mean(w*y);
z[i] = (x-2)/(sqrt(2/n));
}
return z;
}")
ありがとうございます。私はしかし、私のコードで間違った問題を識別した、あなたは完全なものを見てみることができますか? –
*「動作しません」とはどういう意味ですか?どのようにこの関数を呼び出しているかを示し、必要な結果が何であるかを述べる必要があります。 – nrussell
私がzstat(25,2,3,100)を使用して呼び出すと、0 Inf -Inf -Inf -Inf Inf Inf -Inf ...という結果が得られますが、これは意図しないものです。望む結果は、最初のコード(それが固定された後)がベクトルzに格納されているがm回与えられたものでなければならない。 –