我有一个带有自编函数的脚本(没有绘图)。当我将该脚本复制粘贴到R-Studio控制台时,执行需要很长时间,但是当我使用source()
时,它不会花费超过一秒的时间。
我知道通过?source
功能运行代码与在R-Studio控制台输入代码之间存在两个区别:
来自source()
:
由于表达式未在顶层执行,因此不会进行自动打印。
我理解这一点的方式:print(plot)
将不绘制图表(除非特定于R
),而R Studio控制台代码将总是绘制图表。我确定这会在一定程度上影响执行速度,但这在我的情况下似乎无关紧要,因为几乎没有任何情节调用。
和
(...)在运行任何文件之前解析完整的文件
我已经与{{1}}合作了一段时间,但我不确定这是否与我所拥有的速度问题相关。是否有可能在运行任何代码之前完全解析所有代码""加速我的助手函数脚本执行一百倍?
修改:我使用的是R版本3.2.3。
答案 0 :(得分:6)
问题不是source()
与控制台行代码。相反,它是RStudio如何将代码从源窗格发送到控制台的问题。
当我复制Helperfunctions.R
的内容并在RGui(而不是RStudio)中运行时,代码的执行速度几乎与我在RStudio中使用source("Helperfunctions.R")
时的速度相同。
显然,代码行总是(?)在RStudio中需要比在RGui中更多的执行时间。即使您在控制台中执行几行时通常不会注意到时差,但在R Studio控制台中同时执行3.000行代码时,似乎会产生巨大的差异。
我的理解是,在RStudio源代码窗格中使用source("Helperfunctions.R")
后,代码实际上并没有发送到RStudio控制台(速度很慢),而是直接在R
中执行语言。