如何从Rcpp调用特定R包中的R函数

时间:2015-03-05 19:29:58

标签: r rcpp

我想知道是否有办法从Rcpp调用特定包中的R函数。例如,我想打电话给" dtrunc"函数" truncdist"在我的Rcpp文件中打包。有可能吗?

2 个答案:

答案 0 :(得分:4)

不确定。你会抓住这样的功能:

Environment truncdist("package:truncdist") ;
Function dtrunc = truncdist["dtrunc"] ;

甚至可以使用版本0.11.5

Function dtrunc( "dtrunc", "truncdist" ) ;

答案 1 :(得分:2)

是的,您可以在Rcpp中使用R功能。

library(inline)

src <- '
  using namespace Rcpp;
  Environment truncdist("package:truncdist");
  Function dtrunc = truncdist["dtrunc"];

  NumericVector res = dtrunc(x, "norm", 1, 2);
  return res;
'
x <- seq( 0, 3, .1 )

fun <- cxxfunction(signature(x="numeric"),src, plugin="Rcpp")
identical(fun(x), dtrunc( x, spec="norm", a=1, b=2 ))

作为一个注释,您需要记住dtrunc的性能不会仅仅因为在Rcpp内部而得到改善。它基本上与您在R中直接调用它的速度完全相同。