簡體   English   中英

從命令行運行R腳本(從python執行)

[英]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.exeRgui.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM