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
文章图片
选择Package w/Rcpp, 并添加源文件。或者建立包以后,手动复制到src文件夹下。
文章图片
R包的文件结构
文章图片
修改DESCRIPTION文件
将RcppArmadillo添加进Imports和LinkingTo中。
Package: RcppPackTestType: PackageTitle: What the Package Does (Title Case)Version: 0.1.0Author: Who wrote itMaintainer: The package maintainerDescription: 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包的资料请关注脚本之家其它相关文章!
推荐阅读
- 急于表达——往往欲速则不达
- 第三节|第三节 快乐和幸福(12)
- 20170612时间和注意力开销记录
- 2.6|2.6 Photoshop操作步骤的撤消和重做 [Ps教程]
- 对称加密和非对称加密的区别
- 眼光要放高远
- 樱花雨
- 前任
- 2020-04-07vue中Axios的封装和API接口的管理
- 烦恼和幸福