我想知道是否有办法从Rcpp调用特定包中的R函数。例如,我想打电话给" dtrunc"函数" truncdist"在我的Rcpp文件中打包。有可能吗?
答案 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中直接调用它的速度完全相同。