我希望使用Rscript批处理模式运行R文件,但似乎没有加载我需要的库。我遇到的具体错误是:
Error in library(timeSeries) : there is no package called 'timeSeries'
Execution halted
然而我确实有安装timeSeries
包,并且可以在Rstudio、RGui和命令行中轻松加载它,问题似乎只出现在使用Rscript运行脚本时。
我的系统/环境变量配置如下:
C:\Program Files\R\R-3.1.0\bin\x64 (Appended to PATH)
R_HOME = C:\Program Files\R\R-3.1.0
R_User = Patrick
我在RStudio、RGui和命令行中运行了相同版本的R。我还从这三个来源检查了.Library
并且得到了相同的输出。
如何在命令行中使用我正在使用(已安装)的包来运行Rscript?
编辑:
我正在使用Rscript script.r
通过Windows命令行在script.r
所在的目录下运行Rscript。
Rscript -e print(.Library)
的输出为[1] "C:/PROGRA~1/R/R-31~1.0/library"
这与我提到的其他三个选项一致:[1] "C:/PROGRA~1/R/R-31~1.0/library"
然而,如果我将这个放入我的脚本中:
print(.libPaths())
library(timeSeries) #This is the package that failed to load
我得到了一个输出:
[1] "C:/Program Files/R/R-3.1.0/library"
Error in library(timeSeries) : there is no package called 'timeSeries'
Execution halted
在RStudio中对应的调用会额外给出包实际安装位置的路径:
> print(.libPaths())
[1] "C:/Users/Patrick/Documents/R/win-library/3.1" "C:/Program Files/R/R-3.1.0/library"
.libPaths()
重新开始...你也可以在script.r
中的library(timeSeries)
之前加入print(.libPaths())
。 - flodellibrary(timeSeries)
之前添加.libPaths(c("C:/Users/Patrick/Documents/R/win-library/3.1", .libPaths()))
来快速解决问题。我不确定为什么.libPaths()
最初不同。如果您能够查看?.libPaths
的信息以找到原因和更持久的解决方案,那将很好。 - flodelR_LIBS
中的路径。我不确定为什么路径与RScript不同而其他路径却不同。也许这是为了减少启动时间,因为与RScript相比,RScript通常在启动时不会加载太多东西。 - pbreach