从命令行运行R脚本

7
我想在Windows命令行中运行这个示例脚本:http://mazamascience.com/WorkingWithData/?p=912。所以我打开了命令行,输入了Rscript tryCatch.R 1。但是,我一直收到错误消息Error: R not found。我已经设置了PATH环境变量为C:\Programme\R\R-3.0.1\bin。如果我只输入R.exe,它确实启动了R,但是它找不到要在启动时加载的软件包(例如package 'utils' in options<"defaultPackages"> was not found)。我想我必须在某个地方设置另一个路径来加载库,但是我不知道在哪里设置。
更新:在显式键入PATH C:\Programme\R\R-3.0.1\bin(而不仅仅将其添加到环境变量PATH的值)之后,似乎可以找到R。然而,出现了一个新问题:In normalizePath<path.expand(path), winslash, mustWork>: path[2] = "C:/Programme/R/R-3.0.1/library": Access denied,与methods库相同。然后:Calls: .First ... library -> .getRequiredPackages2 -> library -> normalizePath Execution stopped。我使用Windows 7并拥有管理员权限。

尝试使用 R CMD BATCH tryCatch.R 1。您可能需要更改脚本以接受命令行参数(如果需要,我将发布完整答案,但我想先知道这是否有效)。 - Simon O'Hanlon
@SimonO101 谢谢你的建议,但不幸的是我得到了相同的错误信息(错误:未找到R)。 - AnjaM
你可能想要查看 http://batchfiles.googlecode.com 。查看 R.bat。例如,R.bat script myscript.R,它是自动的,但需要一个相当标准的安装或者使用 RPathSet.bat 作为替代方案,这是一个灵活的批处理文件,在运行 R 之前编辑变量并运行它以设置环境变量。它附带有一份文档的 PDF 文件。 - G. Grothendieck
@G.Grothendieck 谢谢您的建议,我会看一下这个! - AnjaM
3个回答

7

Rscript非常方便(R CMD BATCH是旧方法),特别是在Windows下,但通常我会创建一个批处理文件来避免所有路径问题。

例如,创建名为launcher.bat的文件:

@echo off
C:
PATH C:\Programme\R\R-3.0.1\bin;%path%
cd PATH_TO_YOUR_RSCRIPT
Rscript tryCatch.R 1
pause

打开控制台(使用cmd),进入存储launcher.bat的位置并启动它。或者从R控制台使用shell

shell('path_to_launcher\launcher.bat')

谢谢您的建议,这是个好主意。根据您的启动文件内容,我已经尝试明确定义“PATH”,这让我向前迈进了一步,但仍然无法正常工作。一旦我解决了这个问题,我将尝试运行批处理文件。 - AnjaM
@AnjaM 我不明白你所说的显式定义路径是什么意思?你遇到了什么错误? - agstudy
我已更新我的原始问题并在那里描述了新的错误。通过明确定义路径,我指的是在输入 Rscript tryCatch.R 1 之前,在命令行中真正编写 PATH C:\Programme\R\R-3.0.1\bin(就像您在launcher文件中所做的那样)。以前,我只是将路径添加到Windows的PATH环境变量中,并认为这足够了。 - AnjaM
首先尝试使用 source 命令从 R 中执行脚本。一旦你成功了,这个方法就应该可以工作了。 - agstudy
太棒了!非常感谢你的分享。 - Rentrop

3

请注意,我们将PATH变量指向\bin文件夹,而不是直接定位.exe文件。谢谢! - Julian Wise

0
我在Windows 7下遇到了这个问题,显然,在设置环境变量>用户变量时,路径没有添加到PATH中,因此用户必须在系统变量>PATH中添加此路径,最后只需将路径添加到.EXE文件中,就可以解决问题了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接