rmu*_*uc8 5 r batch-file rscript
我想执行一个脚本file.R使用Rscript.在file.R,我使用包dplyr.
# file.R
df <- data.frame(ID,x,y,z,...)
library(dplyr)
filter(df, ID != "null")
......
Run Code Online (Sandbox Code Playgroud)
如果我没有在批处理文件中指定任何选项,则一切正常,因为file.R包含该行library(dplyr)
# 1) no specification of packages in the batch file
Rscript.exe file.R arg1 arg2 arg3 > outputFile.Rout 2>&1
Run Code Online (Sandbox Code Playgroud)
但是,如果我添加default-packages=utils批处理文件,
# 2) specification of packages utils in the batch file
Rscript.exe default-packages=utils file.R arg1 arg2 arg3 > outputFile.Rout 2>&1
Run Code Online (Sandbox Code Playgroud)
部分file.R使用dplyr不工作了(Error in filter(df, ID != 'null') : Object 'ID' could not be found)
自从?Rscript说
--default-packages=list
where list is a comma-separated list of package names or NULL
Run Code Online (Sandbox Code Playgroud)
我尝试添加--default-packages=utils,dplyr,
# 3) specification of packages utils and dplyr in the batch file
Rscript.exe default-packages=utils,dplyr file.R arg1 arg2 arg3 > outputFile.Rout 2>&1
Run Code Online (Sandbox Code Playgroud)
导致与...相同的错误 2
为什么批处理文件1是唯一有效的?我在所有3个替代方案中调用相同的R脚本.
该--default-packages参数指定默认情况下要加载的包.它不会添加到默认包列表中 - 它会替换列表.这意味着您还需要指定您依赖的所有其他基础包.你可以通过制作一个调用的简单测试脚本来看到这一点sessionInfo()
在文件"env.R"中:
sessionInfo()
Run Code Online (Sandbox Code Playgroud)
来自终端的电话: Rscript env.R
R version 3.1.2 (2014-10-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets base
Run Code Online (Sandbox Code Playgroud)
现在我修改那个电话: Rscript --default-packages=utils env.R
R version 3.1.2 (2014-10-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] utils base
Run Code Online (Sandbox Code Playgroud)
所以你需要指定其他缺少的包.
RScript --default-packages=stats,graphics,grDevices,utils,datasets,base,methods env.R
Run Code Online (Sandbox Code Playgroud)
我也在那里扔方法.
有了这个说,如果你刚用RScript运行时没有任何问题,我不明白你为什么要试图搞乱default-packages参数.看起来你只是为自己创造问题,除非你有其他问题试图解决,而你没有告诉我们.