我正在尝试通过Windows命令提示符上的BAT文件运行R脚本。
脚本需要一些R软件包,例如data.table
,tidyR
等。
出于操作原因,所有必需的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
)?
谢谢。
答案 0 :(得分:0)
免责声明:我不熟悉R
。
库搜索路径在从环境启动时初始化 变量R_LIBS(应该是用冒号分隔的目录列表 R库树植根于此),然后是环境中的树库 变量R_LIBS_USER。只有当时存在的目录才会 包括在内。
默认情况下未设置R_LIBS,并且R_LIBS_USER设置为目录 主目录的“ R / R.version $ platform-library / x.y”(或 对于CRAN macOS版本,“ Library / R / x.y / library”),对于R x.y.z。
可以使用set VARIABLE_NAME=YOUR_VALUE
批处理命令来创建environment variable。
因此您的批处理文件可能应该是这样的:
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
parameter扩展为包含批处理文件的目录的完整路径,而{{1} }是批处理文件的完整路径,不带扩展名。
请注意,%~dpn0
不是错字,因为%~dp0R-3.5.1
包含尾部反斜杠。
这样,您可以将%~dp0
复制到C:\Users\username\Documents\R
,脚本仍将运行。
如果您创建脚本的另一个版本,只需复制批处理文件,使其具有与脚本相同的文件名,但扩展名为D:\Users\SOMEOTHERNAME\Documents\R
而不是.bat
,它应调用新脚本-该脚本具有实践证明,在调试和分发脚本时非常方便。
或者,如果您想单独安装库,则可能要使用扩展为.R
的{{1}}。
可以提取正确的%HOMEDRIVE%%HOMEPATH%
文件夹路径以及C:\Users\username
安装路径,但需要读取注册表,因此更加复杂。