[英]Running an R script from command line (to execute from python)
我目前正在嘗試從命令行運行R腳本(我的最終目標是將其作為python腳本的最后一行執行)。 我不確定批處理文件是什么,或者如何使我的R腳本“可執行”。 目前它保存為.R文件。 當我從R運行它時,它工作。
如何從Windows命令提示符行執行此操作? 我需要下載名為Rscript.exe的東西嗎? 我只是將我的R腳本保存為.exe文件嗎? 請告知最簡單的方法來實現這一目標。
R:版本3.3 python:版本3.x os:windows
你已經有了Rscript
,它附帶了你的R版本。如果R.exe
, Rgui.exe
,...在你的路徑中,那么Rscript.exe
也是Rscript.exe
。
你從Python調用可能只是Rscript myFile.R
。 Rscript比R BATCH CMD ...
以及其他非常陳舊和過時的使用模式要好得多。
如上所述,Rscript.exe是運行R腳本的自動化可執行文件,附帶任何R安裝(通常位於bin文件夾中),而@Dirk Eddelbuettel提及的是推薦的自動化版本。 而在Python中,你可以運行任何外部程序作為子與各種類型,包括電話 ,check_output,check_call,或POPEN且其提供了更多的便利,例如在子進程捕獲錯誤后者。
如果R目錄位於PATH環境變量中 ,則不需要包含RScript.exe的完整路徑,只需要包含程序名稱Rscript 。 請注意,這與Linux或Mac操作系統的過程完全相同。
command = 'C:/R-3.3/bin/Rscript.exe' # OR command = 'Rscript'
path2script = 'C:/Path/To/R/Script.R'
arg = '--vanilla'
# CHECK_CALL VERSION
retval = subprocess.check_call([command, arg, path2script], shell=True)
# CALL VERSION
retval = subprocess.call(["'Rscript' 'C:/Path/To/R/Script.R'"])
# POPEN VERSION (W/ CWD AND OUTPUT/ERROR CAPTURE)
curdir = 'C:/Path/To/R/Script'
p = subprocess.Popen(['Rscript', 'Script.R'], cwd=curdir,
stdin = subprocess.PIPE, stdout = subprocess.PIPE,
stderr = subprocess.PIPE)
output, error = p.communicate()
if p.returncode == 0:
print('R OUTPUT:\n {0}'.format(output.decode("utf-8")))
else:
print('R ERROR:\n {0}'.format(error.decode("utf-8")))
你可能已經有了R,因為你已經可以運行你的腳本了。
您所要做的就是找到它的二進制文件(Rscript.exe文件)。
然后打開Windows命令行([cmd] + [R]>輸入:“cmd”> [enter])
輸入R.exe的完整路徑,然后輸入腳本的完整路徑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.