从命令行运行R脚本(从python执行)

时间:2016-08-09 16:42:06

标签: python r shell command-line

我目前正在尝试从命令行运行R脚本(我的最终目标是将其作为python脚本的最后一行执行)。我不确定批处理文件是什么,或者如何使我的R脚本可执行'。目前它保存为.R文件。它从我运行时起作用。
如何从Windows命令提示符行执行此操作?我需要下载名为Rscript.exe的东西吗?我只是将我的R脚本保存为.exe文件吗?请告知最简单的方法。
R:版本3.3 python:版本3.x os:windows

3 个答案:

答案 0 :(得分:3)

您已经有Rscript,它附带了您的R版本。如果R.exeRgui.exe,...在您的路径中,那么Rscript.exe也是如此。

来自Python的电话可能只是Rscript myFile.R。 Rscript远远优于R BATCH CMD ...和其他非常陈旧和过时的使用模式。

答案 1 :(得分:3)

如上所述,运行R脚本的自动化可执行文件Rscript.exe附带任何R安装(通常位于bin文件夹中),而@Dirk Eddelbuettel mentions是推荐的自动版本。在Python中,您可以将任何外部程序作为subprocess运行,其中包含调用 check_output check_call等各种类型 Popen ,后者提供了更多功能,例如在子进程中捕获错误。

如果R目录在PATH environmental variable中,则不需要包含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"))) 

答案 2 :(得分:1)

你可能已经有了R,因为你已经可以运行你的脚本了。

您所要做的就是找到它的二进制文件(Rscript.exe文件)。

然后打开Windows命令行([cmd] + [R]>输入:" cmd"> [enter])

输入R.exe的完整路径,然后输入脚本的完整路径。

相关问题