【问题标题】:Find Rcpp function in a R package在 R 包中查找 Rcpp 函数
【发布时间】:2020-11-13 08:16:23
【问题描述】:

我想打印R包frailtysurvbh函数的C代码。 于是我输入:

> frailtySurv:::bh
function (d_, R_star, K_, Y_, N_, N_dot, beta, theta, frailty, 
    weights, abstol, reltol, maxit) 
{
    .Call("_frailtySurv_bh", PACKAGE = "frailtySurv", 
        d_, R_star, K_, Y_, N_, N_dot, beta, theta, frailty, 
        weights, abstol, reltol, maxit)
}
<bytecode: 0x0000025263262be0>
<environment: namespace:frailtySurv>

在相应的 Github 页面顶部显示此警告:

# Generated by using Rcpp::compileAttributes() -> do not edit by hand

但是我在“frailtySurv”库或其他可以找到_frailtySurv_bh 函数的文件中找不到src 文件。 包源中没有任何.Rcpp 函数的踪迹。 我知道类似的问题已经被问过几次(例如:hereherehere 等)来打印由.Call 调用的函数。 这些对我的情况没有帮助。

关于在哪里可以找到_frailtySurv_bh 函数的任何提示?

谢谢:-)

【问题讨论】:

    标签: c++ r package rcpp


    【解决方案1】:

    _frailtySurv_bh 函数定义在RcppExports.cpp 文件中,该文件定义为here,如下所示:

    RcppExport SEXP _frailtySurv_bh(SEXP d_SEXP, SEXP R_starSEXP, SEXP K_SEXP, SEXP Y_SEXP, SEXP N_SEXP, SEXP N_dotSEXP, SEXP betaSEXP, SEXP thetaSEXP, SEXP frailtySEXP, SEXP weightsSEXP, SEXP abstolSEXP, SEXP reltolSEXP, SEXP maxitSEXP) {
    BEGIN_RCPP
        Rcpp::RObject rcpp_result_gen;
        Rcpp::RNGScope rcpp_rngScope_gen;
        Rcpp::traits::input_parameter< NumericVector >::type d_(d_SEXP);
        Rcpp::traits::input_parameter< List >::type R_star(R_starSEXP);
        Rcpp::traits::input_parameter< List >::type K_(K_SEXP);
        Rcpp::traits::input_parameter< List >::type Y_(Y_SEXP);
        Rcpp::traits::input_parameter< List >::type N_(N_SEXP);
        Rcpp::traits::input_parameter< List >::type N_dot(N_dotSEXP);
        Rcpp::traits::input_parameter< NumericVector >::type beta(betaSEXP);
        Rcpp::traits::input_parameter< NumericVector >::type theta(thetaSEXP);
        Rcpp::traits::input_parameter< String >::type frailty(frailtySEXP);
        Rcpp::traits::input_parameter< NumericVector >::type weights(weightsSEXP);
        Rcpp::traits::input_parameter< double >::type abstol(abstolSEXP);
        Rcpp::traits::input_parameter< double >::type reltol(reltolSEXP);
        Rcpp::traits::input_parameter< int >::type maxit(maxitSEXP);
        rcpp_result_gen = Rcpp::wrap(bh(d_, R_star, K_, Y_, N_, N_dot, beta, theta, frailty, weights, abstol, reltol, maxit));
        return rcpp_result_gen;
    END_RCPP
    }
    

    你会看到它实际上是一个非常薄的 C++ 函数包装器bh,它有点太长,无法在此处重现,但定义为here

    【讨论】:

      猜你喜欢
      • 2020-10-01
      • 1970-01-01
      • 2018-05-16
      • 2014-06-25
      • 1970-01-01
      • 2021-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多