有没有办法从C ++调用r脚本?
我有一个rscript,例如:
myScript.R:
runif(100)
我想从C ++执行这个脚本并传递结果。
我试过了:
#include <Rcpp.h>
#include <iostream>
using namespace Rcpp;
// [[Rcpp::export]]
NumericVector loadFile(CharacterVector inFile){
NumericVector one = system(inFile);
return one;
}
inFile : "C:/Program Files/R/R-3.4.2/bin/x64/Rscript C:/Rscripts/myScript.R"
但它给了我:
cannot convert Rcpp::CharacterVector (aka Rcpp::Vector<16>} to const char* for argument 1 to int system(const char*)
答案 0 :(得分:1)
通常的惯例是使用Rcpp以便在R中编写昂贵的C ++代码。
如果您想从c ++中调用R脚本,然后使用结果,一种方法是使用popen函数。
要了解如何将rcpp字符转换为std :: string,请参阅Converting element of 'const Rcpp::CharacterVector&' to 'std::string'
示例:
std::string r_execute = "C:/Program Files/R/R-3.4.2/bin/x64/Rscript C:/Rscripts/myScript.R"
FILE *fp = popen(r_execute ,"r");
您应该能够从文件流中读取操作结果。