我有一个带有自写函数的脚本(没有绘图)。当我将该脚本复制粘贴到 R-Studio 控制台时,执行需要很长时间,但是当我使用 source("Helperfunctions.R")
时不超过一秒钟。
问题:速度差异从何而来?
我知道通过 source()
运行代码之间的两个差异函数与在 R-Studio 控制台输入代码:
来自 ?source
:
Since expressions are not executed at the top level, auto-printing is not done.
我的理解方式:
source()
不会绘制图形(除非使用例如 print(plot)
进行特定说明),而 R Studio 控制台代码将始终绘制图形。我确信这会在一定程度上影响执行速度,但这对我来说似乎无关紧要,因为几乎没有任何情节调用。和:
(...) the complete file is parsed before any of it is run
我一直在与
R
一起工作现在有一段时间了,但我不确定这是否与我遇到的速度问题有关。 “在运行任何代码之前”完全解析所有代码是否可能将我的辅助函数脚本的执行速度提高一百倍?编辑 :我使用的是 R 版本 3.2.3。
最佳答案
问题不是source()
与控制台行代码。相反,这是 RStudio 如何将代码从源 Pane 发送到控制台的问题。
当我复制Helperfunctions.R
的内容时并在 RGui(而不是 RStudio)中运行它,代码的执行速度与我使用时几乎相同的速度 source("Helperfunctions.R")
在 RStudio 中。
显然,与 RGui 相比,RStudio 中的代码行总是 (?) 需要更多的执行时间。尽管在控制台中执行几行代码时您通常不会注意到时间差异,但当在 R Studio 控制台中一次执行 3.000 行代码时,这似乎会产生巨大的差异。
我的理解是,在使用 source("Helperfunctions.R")
后在 RStudio 源代码 Pane 中,代码实际上并未发送到 RStudio 控制台(这会很慢),而是直接在 R
中执行。语。
关于r - 为什么源速度与 RStudio 控制台行代码不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39096741/