【问题标题】:Set up R Global Environment with one script and access it with a second使用一个脚本设置 R 全局环境并使用第二个脚本访问它
【发布时间】: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


【解决方案1】:

只需 Rscript -e 'source("init.R");source("my.script.R")'

【讨论】:

  • 嗨 H.Wang,欢迎来到 SO 并感谢这个简洁的答案。有几件事可以改善它。首先,如果您能多解释一下您的代码如何解决 OP 的问题(例如,-e 传达了什么?)。其次,您可以通过将代码包装在“`”中来格式化您的答案。非常感谢,这看起来很完美,对其他人会有帮助!
猜你喜欢
  • 2021-12-16
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 2020-04-05
  • 1970-01-01
  • 2017-12-14
  • 2011-11-13
相关资源
最近更新 更多