我正在尝试从libsbml::Model
C++ library
libsbml
最后,我希望我的包能够在R
m <- getModel("text.xml")
m$getListofParameters
我正在尝试以下方法来返回模型
// [[Rcpp::export]]
SEXP getModel (std::string fname) {
libsbml::SBMLReader reader;
libsbml::SBMLDocument* document = reader.readSBMLFromFile(fname);
libsbml::Model* model = document->getModel();
// Rcpp::XPtr<libsbml::Model> modelPtr(model);
// return Rcpp::wrap(modePtr);
return Rcpp::wrap(*model);
}
它给了我一个明显的错误,
cannot initialize a variable of type "SEXP' (aka 'SEXPREC *') with an lvalue of type 'libsbml::Model *const'
可能是因为我需要根据wrap
库中最近的article展开libsbml::Model
以返回Rcpp
类型(我认为)。这个想法我是在正确的轨道上吗?这似乎是一项艰巨的任务,因为libsbml::Model
是一个庞大的类,我是C ++的新手,没有面向对象编程的经验。
我还尝试了以下代码(使用Rcpp
模块)
RCPP_MODULE(sbModel){
using namespace Rcpp ;
// we expose the class libsbml::Model as "Model" on the R side
class_<libsbml::Model>("Model")
// exposing the default constructor
.constructor<unsigned int, unsigned int>("Creates a new Model using the given SBML level and version values.")
// exposing member functions -- taken directly from libsbml::Model
.method( "getListofParameters", &libsbml::Model::getListOfParameters(),"Get the list of Parameters of the model")
}
为了揭示libsbml::Model
类的一些方法。但是我在包
Clean and Rebuild
命令上收到以下消息
call to non-static member function without an object argument
对于这个模糊的问题感到抱歉,但是有关如何实现将libsbml::Model
导出到R
并公开该类的某些字段的最终目标的任何指示都将非常感激。最终版本的代码可以在 -
https://github.com/sn248/Rcppsbml/blob/master/src/getModel.cpp