2016-11-19 7 views
-1

ここで何が間違っていますか?私が直接このC++プログラムからRを呼び出す(Linuxの場合)

/home/vagrant/bin/Rscript -e "x <- 2; x+1" 

ようRscriptを呼び出すと、私はこの出力を得る

[1] 3

私はexecl()を使用して、私のC++のプログラムからRscriptを呼び出すと、私はエラー。

Rscriptを呼び出すためのコードスニペットは、私が

Fatal error: cannot open file 'x <- 2; x+1': No such file or directory

を取得し、誰かがR拡張を書い示唆する前に、それは私のためのオプションではありません

void callR_dummy(int i) { 
    int errval = execl("/home/vagrant/bin/Rscript", "-e", "x <- 2; x+1", (char*) NULL); 
    int err = errno; 
    cout <<"callR " << i << " : errno = " << err << endl; 
} 

を下回っている、私はそれに限定されています。 誰かがこの複製をもう一度マークする前に、そうではありません。延長はオプションではありません。

+1

... – Lev

+0

二重引用符を引用符をエスケープ –

答えて

0
int errval = execl("/home/vagrant/bin/Rscript", "-e", "\"x <- 2; x+1\"", (char*) NULL); 
第三引数に
+0

は、私もそのバリエーションを試してみました。さて、確かに、 'system()'への切り替えはやりましたが、なぜ 'execl()'が失敗するのか不思議です。 – pbhowmick

+0

あなたの引数をそのまま渡すので。 Rは、コマンドラインで渡している生のコードを引用符で囲む必要があります。それ以外の場合は、それがファイルの場所だと思います – Lev

関連する問題