欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2022-07-03 19:39:03
目录1. 预先准备源文件示例func.cpp头文件示例test_h.h2. 创建r包步骤新建r packager包的文件结构修改description文件3. c++11标准问题1. 预先准备wind...

1. 预先准备

windows下需要安装rtools,r中装好rcpp和rcpparmadillo。创建c++源文件func.cpp,自定义头文件test_h.h

源文件示例func.cpp

// [[rcpp::depends(rcpparmadillo)]]
// [[rcpp::plugins(cpp11)]]
#include <rcpparmadillo.h>
#include <vector>
#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<<condit<<std::endl;
  return wrap(a);
}

// [[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 <iostream>
#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: rcpppacktest
type: package
title: what the package does (title case)
version: 0.1.0
author: who wrote it
maintainer: the package maintainer <yourself@somewhere.net>
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-8
lazydata: true
imports: rcpp (>= 0.12.11), rcpparmadillo
linkingto: rcpp, rcpparmadillo

build & reload 建立包

3. c++11标准问题

如果要使用c++11标准,第一种方法是在makevars文件中添加如下代码:

cxx = g++-4.8.1
pkg_cxxflags = -std=c++11

第二种方法是在.cpp文件前添加// [[rcpp::plugins(cpp11)]]

以上就是rcpp和rcpparmadillo创建r包实现方式的详细内容,更多关于rcpp和rcpparmadillo创建r包的资料请关注其它相关文章!