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

How to call an R function in a particular R package from Rcpp

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

当然可以。你会像这样获取函数:

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

甚至是 0.11.5 版本

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

是的,您可以在 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 中调用它的速度完全相同。