Rcpp和RcppArmadillo创建R语言包的实现方式

目录

  • 1. 预先准备
    • 源文件示例func.cpp
    • 头文件示例test_h.h
  • 2. 创建R包步骤
    • 新建R Package
    • R包的文件结构
    • 修改DESCRIPTION文件
  • 3. C++11标准问题

    1. 预先准备 Windows下需要安装Rtools,R中装好Rcpp和RcppArmadillo。创建C++源文件func.cpp,自定义头文件test_h.h

    源文件示例func.cpp
    // [[Rcpp::depends(RcppArmadillo)]]// [[Rcpp::plugins(cpp11)]]#include #include #include "./test_h.h"using namespace Rcpp; using namespace std; // using namespace arma; // [[Rcpp::export]]RObject func(){arma::cube A(3,4,5,arma::fill::randu); std::cout< // [[Rcpp::depends(RcppArmadillo)]]:用于指明需要使用RcppArmadillo。
    // [[Rcpp::plugins(cpp11)]]:指明需要使用C++11。
    #include "./test_h.h":表示使用第三方头文件。第三方头文件需要用双引号""包括起来,并加上.h./表示在当下文件夹(src)下搜寻文件。
    // using namespace arma; 不一定有用。如果要用Armadillo的数据结构,在其之前需指明arma::
    func()函数将可以直接在R中调用。

    头文件示例test_h.h

    #include #define CONDIT 1000


    2. 创建R包步骤
    新建R Package
    Rcpp和RcppArmadillo创建R语言包的实现方式
    文章图片

    选择Package w/Rcpp, 并添加源文件。或者建立包以后,手动复制到src文件夹下。
    Rcpp和RcppArmadillo创建R语言包的实现方式
    文章图片


    R包的文件结构
    Rcpp和RcppArmadillo创建R语言包的实现方式
    文章图片


    修改DESCRIPTION文件
    将RcppArmadillo添加进Imports和LinkingTo中。
    Package: RcppPackTestType: PackageTitle: What the Package Does (Title Case)Version: 0.1.0Author: Who wrote itMaintainer: The package maintainer Description: More about what it does (maybe more than one line)Use four spaces when indenting paragraphs within the Description.License: What license is it under?Encoding: UTF-8LazyData: trueImports: Rcpp (>= 0.12.11), RcppArmadilloLinkingTo: Rcpp, RcppArmadillo

    Build & Reload 建立包

    3. C++11标准问题 如果要使用C++11标准,第一种方法是在Makevars文件中添加如下代码:
    CXX = g++-4.8.1PKG_CXXFLAGS = -std=c++11

    第二种方法是在.cpp文件前添加// [[Rcpp::plugins(cpp11)]]
    【Rcpp和RcppArmadillo创建R语言包的实现方式】以上就是Rcpp和RcppArmadillo创建R包实现方式的详细内容,更多关于Rcpp和RcppArmadillo创建R包的资料请关注脚本之家其它相关文章!

      推荐阅读