【发布时间】:2018-07-10 18:20:05
【问题描述】:
我有多个需要在命令行运行的 R 脚本,它们都使用相同的全局环境。我如何运行初始化脚本来设置后续脚本可以访问的环境,而不是每个脚本加载相同的包并获取相同的函数文件?
对于(一个非常简化的)示例:
这里是 init.R:
library(some.package)
source(path/to/my_functions.R)
所以我跑了,
Rscript init.R
在cli。但是当我运行下一个脚本时,
Rscript my.script.R
它创建了自己的全局环境,我假设由 init.R 创建的环境在脚本完成时被销毁?
我尝试过使用 save.image()/load() 但这似乎与简单地在每个依赖脚本中加载包和函数一样慢/低效。
可以使这个工作流程发挥作用吗?
【问题讨论】:
-
为什么不直接从
my.script.R内部运行source(init.R)?一旦您传递给 Rscript 的文件内容运行,R 就会停止运行。您不能将数据留在内存中,因为没有任何东西可以要求它。如果你不想保存/加载数据,那么你需要有一个文件来运行你想要的一切(可以source()其他脚本)。 -
是的,我绝对可以,但我想看看是否有办法避免这种情况。我希望通过使用 inti.R 创建环境,我可以减少每次调用 my.script.R 的开销。
标签: r