如何从 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 中调用它的速度完全相同。
我想知道是否有办法从 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 中调用它的速度完全相同。