声明:我对R
不熟悉。
来自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
批处理命令创建环境变量。
因此,您的批处理文件应该类似于以下内容:
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
安装路径是可能的,但需要读取注册表,因此稍微复杂一些。
.libPaths(paste("C:/Users/",Sys.getenv("USERNAME"),"/Documents/R/R-3.5.1/library",sep=""))
怎么样? - Maylo