繁体   English   中英

设置.libPaths()以使用Rscript.exe从命令行运行R脚本

[英]Setting .libPaths() For Running R Scripts From Command Line Using Rscript.exe

我试图通过Windows命令提示符上的BAT文件运行R脚本。

脚本需要一些R包,例如data.tabletidyR等。

出于操作原因,所有必需的R软件包和依赖项(包括data.table )都安装在C:\\Users\\username\\Documents\\R\\R-3.5.1\\library 我不允许在此环境中安装RStudio。

当我尝试"C:\\Program Files\\R\\R-3.5.1\\bin\\x64\\Rscript.exe" script.R ,出现类似的错误

库(data.table)中的错误:没有名为“ data.table”的程序包中止执行

如何通过命令提示符设置.libPaths指向软件包的正确位置(即C:\\Users\\username\\Documents\\R\\R-3.5.1\\library )?

先感谢您。

免责声明:我不熟悉R

R:搜索路径

库搜索路径在启动时从环境变量R_LIBS(应该是R库树所在的目录的冒号分隔的目录列表)中初始化,然后在环境变量R_LIBS_USER中进行初始化。 仅包含当时存在的目录。

默认情况下,未设置R_LIBS,并且R_LIBS_USER设置为R xyz的主目录的目录'R / R.version $ platform-library / x.y(对于CRAN macOS构建为'Library / R / xy / library')

可以使用set VARIABLE_NAME=YOUR_VALUE批处理命令来创建环境变量

因此,您的批处理文件可能应该是这样的:

cd /d "C:\INSERT_PATH_TO_DIRECTORY_CONTAINING_script.R"
set "R_LIBS=C:\Users\username\Documents\R\R-3.5.1\library"
"C:\Program Files\R\R-3.5.1\bin\x64\Rscript.exe" script.R

但是出于可移植性的原因(假设某位同事要求您提供脚本副本或计算机死机),我建议将脚本,R库和批处理文件放在一个目录中,例如C:\\Users\\username\\Documents\\R 批处理文件C:\\Users\\username\\Documents\\R\\script.bat变为:

cd /d "%~dp0"
set "R_LIBS=%~dp0R-3.5.1\library"
"%PROGRAMFILES%\R\R-3.5.1\bin\x64\Rscript.exe" "%~dpn0.R"

%PROGRAMFILES%环境变量扩展到program files夹的完整路径, %~dp0 参数扩展到保存批处理文件的目录的完整路径, %~dpn0是不带扩展名的批处理文件完整路径。

注意, %~dp0R-3.5.1不是一个错字,因为%~dp0包含尾部反斜杠。

这样,您可以将C:\\Users\\username\\Documents\\R复制到D:\\Users\\SOMEOTHERNAME\\Documents\\R ,脚本仍将运行。

如果您创建脚本的另一个版本,只需复制批处理文件,使其具有与脚本相同的文件名,但扩展名为.bat而不是.R ,并且应调用新脚本-在调试和分发时,这非常方便脚本。

另外,如果您想单独安装库,则可能要使用%HOMEDRIVE%%HOMEPATH% ,它会扩展为C:\\Users\\username

可以提取正确的Documents文件夹路径以及R安装路径,但需要读取注册表,因此更加复杂。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM