0
(ダブル入力から)ガンマ関数を利用する元のR関数を(R)cppに書き直そうとしています。元のソースの下。 sourceCppをコンパイルすると、次のエラーが発生します。 "ガンマ(Rcpp :: traits :: storage_type(< 14>:タイプ)の呼び出しに一致する関数がありません"Rcppガンマ積分
ガンマ関数は、 。。あなたは仕事がベクトル化されRcpp砂糖のポイントとして、この複雑すぎるを作っているの使用以下の平均として)ので、私は簡単にそこに呼ばれるべき期待
#include <Rcpp.h>
#include <math.h>
using namespace Rcpp;
// original R function
// function (y_pred, y_true)
// {
// eps <- 1e-15
// y_pred <- pmax(y_pred, eps)
// Poisson_LogLoss <- mean(log(gamma(y_true + 1)) + y_pred -
// log(y_pred) * y_true)
// return(Poisson_LogLoss)
// }
// [[Rcpp::export]]
double poissonLogLoss(NumericVector predicted, NumericVector actual) {
NumericVector temp, y_pred_new;
double out;
const double eps=1e-15;
y_pred_new=pmax(predicted,eps);
long n = predicted.size();
for (long i = 0; i < n; ++i) {
temp[i] = log(gamma(actual[i]+1)+y_pred_new[i]-log(y_pred_new[i])*actual[i]);
}
out=mean(temp); // using sugar implementation
return out;
}
正常に動作します。あなたの説明とサポートをありがとう! –