【问题标题】:Rscript does not load methods package, R does -- why, and what are the consequences?Rscript 不会加载方法包,而 R 会加载 - 为什么以及后果是什么?
【发布时间】:2013-11-09 22:06:04
【问题描述】:

刚刚看到这个:

$ Rscript -e "sessionInfo()['basePkgs']"
$basePkgs
[1] "stats"     "graphics"  "grDevices" "utils"     "datasets"  "base"

$ R --vanilla --slave -e "sessionInfo()['basePkgs']"
$basePkgs
[1] "stats"     "graphics"  "grDevices" "utils"     "datasets"  "methods"
[7] "base"

methods 包似乎在运行R 时始终可用,但不适用于Rscript。我怀疑这是为了提高性能,但是除了显而易见的之外,还有什么实际意义吗?我之所以问这个问题是因为 funny bugmethods 包的存在或不存在触发。

【问题讨论】:

  • 您始终可以通过将library(methods) 添加到您的.Rprofile 来显式加载包
  • ?Rscript 告诉你为什么它省略了方法包,“Rscript 的默认值省略了methods,因为它需要大约 60% 的启动时间。”
  • @JoshuaUlrich:谢谢,这解释了“为什么”。我只咨询过man Rscript
  • 如果您是包编写者,这意味着您的包需要在DESCRIPTION文件中Depends: methods(参见@GSee引用的线程中Chambers的评论),以及import("methods")在NAMESPACE 文件——无论如何可能是“最佳实践”。

标签: r rscript


【解决方案1】:

根据?Rscript,未加载方法包,因为“Rscript 的默认设置省略了方法,因为它需要大约 60% 的启动时间。”

【讨论】:

  • 这种微小的加速是做出如此卑鄙的事情的可怕理由。它会导致各种 R 代码在 RRscript 下以不可预知的方式运行。在我的机器上,echo 7 | R 需要 0.15 秒,Rscript -e 7 需要 0.07 秒。几乎没有什么值得它引起的幽灵般的远距离动作。
  • ...很抱歉评论了一个老问题和答案,但是我小组中的 3 位科学家刚刚分享了一次发现这种行为的可怕故事,所以我想发表评论关于谷歌为我找到的第一个适用的 SO 问题。 =)
猜你喜欢
  • 2018-09-13
  • 2017-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-23
  • 1970-01-01
  • 2013-02-18
相关资源
最近更新 更多