Rstudio在运行和源之间的区别

时间:2014-05-28 23:49:46

标签: rstudio

我正在使用Rstudio而不确定选项"运行"和"来源"是不同的。

我尝试使用谷歌搜索这些条款但是来源'是一个非常常见的词,无法获得良好的搜索结果:(

enter image description here

9 个答案:

答案 0 :(得分:26)

Runsource的含义略有不同。根据RStudio documentation

  

选择和调用中的运行行之间的区别   来源是在运行选择时插入所有行   直接进入控制台,而对于Source,文件保存到   临时位置,然后从那里采购到控制台   (从而在控制台中减少混乱)。

需要注意的是,文件中的源代码功能使它们可供脚本使用。这是什么意思?想象一下,您正在尝试对从脚本调用的函数进行故障排除。您需要source包含该函数的文件,以便在脚本中的该行为run时使用函数中的可用更改。

这方面的另一个方面是您可以从脚本中source执行功能。我使用此代码自动获取目录中的所有函数,这样可以轻松地使用单个run运行长脚本:

# source our functions
code.dir <- "c:\temp"
code.files = dir(code.dir, pattern = "[.r]")
for (file in code.files){
  source(file = file.path(code.dir,file))
}

答案 1 :(得分:6)

有时,由于我不理解的原因,您将获得不同的行为,具体取决于您是选择所有代码行还是按下运行按钮或转到代码菜单并选择“来源”。例如,在一个特定情况下,当我选择了所有代码行时,将gplot写入png文件时,但是当我进入代码菜单并选择“source”时,写入失败。但是,如果我选择'Source with Echo',我可以再次打印到png文件。

我只是在报告我在选择和运行所有行和代码以及转到代码菜单和选择“源”之间的差异,至少在尝试将gplot打印到a时png文件。

答案 2 :(得分:5)

@ AndyClifton答案的一个重要含义是:

Rstudio断点source(Ctrl-Shift-S)中工作,但run中的不是(Ctrl-Enter)

大概是因为run,代码会直接传递到控制台,而不支持部分提交。

尽管如此,您仍然可以使用browser()

run(Ctrl-Shift-S)以及print()支持

debugSource到控制台。

答案 3 :(得分:2)

&#34;运行&#34;按钮只是执行选定的一行或多行。 &#34;来源&#34;按钮将执行整个活动文档。但为什么不尝试它们并看到差异?

答案 4 :(得分:1)

encounter1 = buttonbox(image = "source.gif", msg = "A goblin approaches!", choices = ["Attack", "Heal"]) 将运行每行代码,这意味着它会在每行的开头处输入,这会将输出打印到控制台。 Source不会打印任何内容,除非你使用echo来源,这意味着ggplot不会打印到pngs,正如另一篇文章提到的那样。

答案 5 :(得分:0)

使用RSTudio时,您可以按脚本部分中的运行按钮 - 它将运行选定的行。 在它旁边你有重新运行按钮,再次运行该行。它旁边的源按钮将运行整个代码块。

我发现了一个关于此主题的视频:

http://www.youtube.com/watch?v=5YmcEYTSN7k

答案 6 :(得分:0)

我还刚刚发现,如果您使用源文件或使用gm_mime将源文件的功能添加到环境中,则用于读取源功能的编码也可以不同!

在我的情况下,我的函数中有一个带有特殊字符(µ)的正则表达式。当我直接导入函数(Ctrl+Enter时,一切都会正常,而在采购包含此函数的文件时出现错误。

为解决此问题,我在Ctrl+Enter函数(source)中指定了源文件的编码。

答案 7 :(得分:0)

使用回显的源/源用于执行整个文件,而根据我的个人经验,运行将执行光标所在的行。 因此,运行可帮助您调试代码。注意环境。它将显示堆栈中发生的事情。

答案 8 :(得分:0)

对于那些不愿透露情节的人。它们不会显示在 Plots 控制台中。但是您绝对可以使用RStudio中的 Source 将图保存到光盘中。使用此代码段:

png(filename)
print(p)
dev.off()

我可以确认将图写入磁盘。此外,打印语句也会输出到控制台