繁体   English   中英

Rcpp - 在sourceCpp引用的文件中使用多个C ++函数?

[英]Rcpp - Use multiple C++ functions in file referenced by sourceCpp?

我希望这不是太明显,因为我整天搜索并找不到答案。

说我有以下R文件:

library(Rcpp)
sourceCpp("cfile.cpp")

giveOutput(c(1,2,3))

它编译以下C ++文件:

#include <Rcpp>
using namespace Rcpp;
// [[Rcpp::export]]

NumericVector plusTwo(NumericVector x){
  NumericVector out = x + 2.0;

  return out;
}

NumericVector giveOutput(NumericVector a){

NumericVector b = plusTwo(a);
return b;
}

无论我尝试什么,Rcpp预处理器都可以使用plusTwo() ,而giveOutput()不使用giveOutput() 我能够找到的文档说这是一个应该创建一个包的点,但是在阅读了包后,它看起来比我需要的要复杂一个数量级。

如果plusTwo()giveOutput()中明确定义plusTwo() giveOutput() ,我该怎么办?

您应该在要导出的每个函数前面使用export属性 所以通过纠正你的文件

#include <Rcpp.h>

using namespace Rcpp;

// [[Rcpp::export]]
NumericVector plusTwo(NumericVector x){
  NumericVector out = x + 2.0;
  return out;
}

// [[Rcpp::export]]
NumericVector giveOutput(NumericVector a){
  NumericVector b = plusTwo(a);
  return b;
}

我得到了理想的行为:

R> sourceCpp("/tmp/patrick.cpp")
R> giveOutput(1:3)
[1] 3 4 5
R> plusTwo(1:3)
[1] 3 4 5
R> 

哦,创建一个包就像调用Rcpp.package.skeleton()一样简单(但是阅读它的帮助页面,特别是对于attributes参数)。 我知道至少有一个CRAN包开始了你如何从这里开始并明确地通过Rcpp.package.skeleton() ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM