скрипт call r из c ++ дает не может конвертировать Rcpp :: CharacterVector в const char * - PullRequest
0 голосов
/ 05 июня 2018

Есть ли способ вызова скрипта r из C ++?

У меня есть 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 Ответ

0 голосов
/ 05 июня 2018

Обычно принято использовать Rcpp для написания дорогого кода C ++ на R.

Если вы хотите вызвать скрипт R изнутри c ++, а затем работать с результатом, один из подходов будетиспользовать функцию popen.

Чтобы узнать, как преобразовать символ rcpp в std :: string, см. Преобразование элемента 'const Rcpp :: CharacterVector &' в '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");

Вы должны быть в состоянии прочитать результат операции из потока файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...