我想調用一個R腳本,說myRfile.R
,從MatLab
。我正在使用Windows 10
機器,其中MatLab 2017a
和R-3.4.2
。我用的是system
命令的建議在以前stackoverflow question.解決的辦法是做到以下幾點:從MatLab調用R腳本 - 錯誤
添加路徑的
R
安裝位置。在我的情況下,我寫了addpath C:\Program Files\R\R-3.4.2\bin
。確保R腳本位於工作目錄(或路徑)中。
調用函數
system('R CMD BATCH myRfile.R')
。
I,然而,得到的錯誤標誌= 1和下面的印刷在命令窗口:
「R」不被識別爲內部或外部的命令, 可操作的程序或批處理文件。
我檢查,以確保我可以從CMD導航到相應的文件並調用運行R.exe
R
。相反,如果我呼籲通過system
:
系統( ' 「C:\ Program Files文件\ r \ R-3.4.2 \ BIN \ 64 \運行R.exe」 CMD批 myRfile.R'); ,
然後腳本正確執行(無錯誤)。因此,我找到了解決我的問題的方法。但是,我想定義字符串
RPATH = 「C:\ Program Files文件\ r \ R-3.4.2 \ BIN \ 64 \運行R.exe」
在開始我的程序並運行命令
system('Rpath CMD BATCH myRfile.R');
這將返回一個類似的錯誤如前:
「RPATH」不被識別爲內部或外部的命令, 運行的程序或批處理文件。
問題:
爲什麼命令
system('R CMD BATCH myRfile.R')
不適合我?爲什麼會出現
system
命令工作,如果我寫R
直接作爲字符串的目錄,但如果我通過通過Rpath
給它一個字符串,它不工作?
將「Rpath」放在字符串中間不會傳遞任何我知道的編程語言中的字符串。使用'sprintf'來生成'system'的字符串參數。 – excaza
當您將R添加到系統路徑中時,是否重新啓動了matlab? 'getenv('PATH')'包含R目錄嗎? ([Matlab的「運行外部命令」](https://www.mathworks.com/help/matlab/matlab_external/run-external-commands-scripts-and-programs.html)頁面爲您工作嗎? – r2evans
@excaza'系統('sprintf(Rpath)CMD BATCH Rum_81_genB_VtoH.R')'不起作用,它返回錯誤'sprintf'不被識別... –