我有一个R文件example.r
,基本上看起来像这样:
#!/usr/bin/env Rscript
# do something ...
library(somelibrary)
# do something with somelibrary functions
还有一个bash脚本,在一次执行期间需要使用不同的输入参数多次调用Rscript example.r <PARAMETER>
。我的问题是是否有办法只将包somelibrary
加载一次。现在,每次调用脚本时都会加载该程序包,这会产生一些开销。
如果您正在启动这样的脚本:
#!/usr/bin/env Rscript
# do something ...
library(somelibrary)
# do something with somelibrary functions
然后,它的每个实例都是一个新进程,一个新的R进程,因此,必须使用library
附加任何其他程序包。除非您要将R作为服务运行,否则开销是不可避免的。
在附上包裹之前,您可以检查包裹是否已经装入。因此解决方案可能看起来像这样
if !("igraph" %in% .packages(TRUE)) {
library(igraph)
}