假设我们有一个回归模型,它将名为AA和BB的参数作为输入。假设AA和BB都是双倍的。
我知道我应该用C ++创建一个数据框,并将其作为参数传递给预测函数。我想知道如何在C ++中创建和传递数据框?为什么以下代码不会出现问题?
Rcpp::DataFrame dfin = Rcpp::DataFrame::create(Rcpp::Named("AA")=1.1,Rcpp::Named("BB")=1.2);
std::string cmd2 = "predict(RegModel, todaydata = data.frame(dfin), \"probs\")";
vector<double> prob_vector_reg_output = R.parseEval(cmd2);
答案 0 :(得分:3)
您可能会混淆Rcpp
- 确实为您创建data.frame
对象 - RInside
可让您评估表达式。
看看,例如来自examples/standard/rinside_sample3.cpp
示例的RInside
:它显示您可以通过C ++端的RInside访问R中计算的lm()
结果。您也可以将数据传递给嵌入式R进程 - 但它仍然需要RInside
。
另一方面,通过Rcpp
构建的R扩展模块也可以访问R函数,但这样做的方式不同(周围有很多例子)。
在任何一种情况下,R 执行预测步骤将始终以R的速度执行,无论您是否使用C ++控制它。