代码之家  ›  专栏  ›  技术社区  ›  George

从C++调用R脚本不能将RCPP::特征向量转换为conchar *

  •  0
  • George  · 技术社区  · 7 年前

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

    1 回复  |  直到 7 年前
        1
  •  1
  •   JineshEP    7 年前

    通常的约定是使用RCPP,以便在R中编写昂贵的C++代码。

    如果您想从C++中调用R脚本,然后使用结果,一种方法是使用POPON函数。

    查看如何将RCPP字符转换为STD:: 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");
    

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