从 C++ 调用 r 脚本无法将 Rcpp::CharacterVector 转换为 const char*

call r script from c++ gives cannot convert Rcpp::CharacterVector to const char*

有没有办法从 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*)

通常的约定是使用 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");

您应该能够从文件流中读取操作结果。