【问题标题】:Simple matrix to matrix function using rcpp [duplicate]使用rcpp的简单矩阵到矩阵函数[重复]
【发布时间】:2017-03-21 00:51:06
【问题描述】:

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

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;
}')

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

【问题讨论】:

标签: r rcpp


【解决方案1】:

很遗憾,Rcpp NumericMatrix 尚不支持矩阵乘法。一种选择是通过RcppArmadillo 使用Armadillo

# 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")

注意% 是逐元素乘法

【讨论】:

  • 感谢您的回复。然而,我在使用代码时遇到了错误:ld:警告:找不到选项'-L/usr/local/lib/gcc/x86_64-apple-darwin13.0.0/4.8.2'的目录ld:找不到-lgfortran的库clang:错误:链接器命令失败,退出代码 1(使用 -v 查看调用) make: *** [sourceCpp_3.so] 错误 1
猜你喜欢
  • 2021-03-01
  • 2020-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-31
相关资源
最近更新 更多