我目前正在尝试从命令行运行R脚本(我的最终目标是将其作为python脚本的最后一行执行)。我不确定批处理文件是什么,或者如何使我的R脚本可执行'。目前它保存为.R文件。它从我运行时起作用。
如何从Windows命令提示符行执行此操作?我需要下载名为Rscript.exe的东西吗?我只是将我的R脚本保存为.exe文件吗?请告知最简单的方法。
R:版本3.3 python:版本3.x os:windows
答案 0 :(得分:3)
您已经有Rscript
,它附带了您的R版本。如果R.exe
,Rgui.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的完整路径,然后输入脚本的完整路径。