【问题标题】:Rcpp integration when C++ functions call each otherC++ 函数相互调用时的 Rcpp 集成
【发布时间】:2014-05-10 00:39:09
【问题描述】:

我开始使用 Rcpp 框架,用于将 C++ 函数与 R 集成。

以下集成工作正常:

   cppFunction('
   double normal_dens( double x ) 
   {
     const double  SQRT2PI = 2.50662827463;
     return( exp(-x*x/2.0)/SQRT2PI );
   }
  ')

接下来我要整合:

   cppFunction('
   double test( double x ,double a) 
   {
    return( a* normal_dens(x);); 
   }
  ')

内部 cpp 编译器抱怨 (rightly-so) 函数 normal_dens 是未知的。最简单的方法是什么?

多谢

【问题讨论】:

  • i) 本周就在这个网站上提出了这个问题。 ii) 这是一个标准的 C/C++ 问题,在每一本体面的书中都有介绍。对于初学者,请查找“函数声明”和“头文件”。

标签: c++ r rcpp


【解决方案1】:

每个cppFunction 调用都会创建一个独立的共享库。他们不知道彼此。

一个简单的替代方法是将所有文件放在同一个文件中:

#include <Rcpp.h>

// [[Rcpp::export]]
double normal_dens( double x ) {
  const double  SQRT2PI = 2.50662827463;
  return( exp(-x*x/2.0)/SQRT2PI );
}

// [[Rcpp::export]]
double test( double x ,double a){
  return( a* normal_dens(x);); 
}

然后在这个文件上调用sourceCpp。稍后,您将想要学习如何制作包。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-19
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    • 2013-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多