使用 rcpp 的简单矩阵到矩阵函数

Simple matrix to matrix function using rcpp

我正在尝试使用 rcpp 在 r 中编写一个简单的函数。我正在通过 http://adv-r.had.co.nz/Rcpp.html 弄清楚语法并使用了 sugar 函数,但无法使以下内容起作用:

cppFunction('NumericMatrix fun(NumericMatrix x) {
    NumericMatrix dd = (exp(-(pow(x, 2)) / 2)*(3 - 6*pow(x, 2) + pow(x,4)))/sqrt(2*PI);
    return dd;
}')

基本上是在矩阵的每个元素中应用一个函数。我怎样才能让它工作?

遗憾的是,Rcpp NumericMatrix 尚不支持矩阵乘法。一种选择是使用 Armadillo via RcppArmadillo.

# install.packages("RcppArmadillo")
Rcpp::cppFunction('arma::mat fun(const arma::mat& x) {
    arma::mat dd = (exp(-(pow(x, 2)) / 2)%(3 - 6*pow(x, 2) + pow(x,4)))/sqrt(2*PI);
    return dd;
}', depends = "RcppArmadillo")

注意%是逐元素乘法