【发布时间】:2014-07-18 09:16:02
【问题描述】:
我正在使用 Rstudio,但不确定“运行”和“源”选项有何不同。
我尝试用谷歌搜索这些术语,但“来源”是一个非常常见的词,无法获得良好的搜索结果:(
【问题讨论】:
标签: rstudio
我正在使用 Rstudio,但不确定“运行”和“源”选项有何不同。
我尝试用谷歌搜索这些术语,但“来源”是一个非常常见的词,无法获得良好的搜索结果:(
【问题讨论】:
标签: rstudio
Run 和source 的含义略有不同。根据 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))
}
【讨论】:
source。
example(source); sourceDir("c:\\temp")
有时,由于我不明白的原因,您会得到不同的行为,具体取决于您是选择所有代码行并按下运行按钮还是转到代码菜单并选择“源代码”。例如,在一种特定情况下,当我选择所有代码行时,将 gplot 写入 png 文件是可行的,但当我进入代码菜单并选择“源”时写入失败。但是,如果我选择“Source with Echo”,我可以再次打印到 png 文件。
我只是在这里报告一个区别,我在选择和运行所有行和代码与进入代码菜单并选择“源”之间看到了差异,至少在尝试将 gplot 打印到.png 文件。
【讨论】:
@AndyClifton 的回答的一个重要含义是:
Rstudio 断点在source (Ctrl-Shift-S) 中有效,但在run (Ctrl-Enter) 中不
大概是因为使用run,代码被直接传递到控制台,不支持部分提交。
您仍然可以使用 browser() 和 run。
debugSource (Ctrl-Shift-S) 和run 支持print() 到控制台。
【讨论】:
“运行”按钮只是执行选定的一行或多行。 “源”按钮将执行整个活动文档。但是为什么不尝试一下,看看有什么不同呢?
【讨论】:
Run 将运行每一行代码,这意味着它在每一行的开头按 enter,将输出打印到控制台。除非您使用 echo 获取源,否则源不会打印任何内容,这意味着 ggplot 不会打印到 pngs,正如另一个帖子所提到的。
【讨论】:
print("Hello World") 保存此文件(作为 xR),然后从控制台执行 source("x.R") 您应该在 Console 上看到 [1] "Hello World" 请查看我显示的其他答案它也可以写情节
我还刚刚发现,如果您使用源文件或使用 Ctrl+Enter 将源文件的函数添加到您的环境中,用于读取源函数的编码也可能不同!
在我的例子中,我的函数中有一个带有特殊字符 (µ) 的正则表达式。当我直接导入函数 (Ctrl+Enter) 时,一切正常,而在获取包含此函数的文件时出现错误。
为了解决这个问题,我在 source 函数 (source("utils.R", encoding = "UTF-8")) 中指定了源文件的编码。
【讨论】:
tibble。运行传递编码解决了这个问题。谢谢!
使用 RStudio 时,您可以按脚本部分中的运行按钮 - 它将运行选定的行。 在它旁边有重新运行按钮,用于再次运行该行。它旁边的源按钮将运行整个代码块。
我找到了一个关于这个主题的视频:
【讨论】:
Source/Source with echo 用于执行整个文件,而 Run 就我个人的经验而言,会执行光标所在的行。 因此,Run 可以帮助您调试代码。注意环境。它将显示堆栈中发生的事情。
【讨论】:
对于那些说情节不显示的人。它们不会显示在 Plots 控制台中。但是您绝对可以使用 RStudio 中的 Source 将绘图保存到光盘。使用这个 sn-p:
png(filename)
print(p)
dev.off()
我可以确认情节已写入光盘。此外打印语句也输出到控制台
【讨论】:
run 和 source 之间的一个很大的实际区别是,如果您在 source 中遇到无法解释的错误,它将使您在没有完成的情况下退出代码,而 run 只会将下一行传递到控制台并继续运行。这是我在清理其他人的脚本时看到的主要实际区别。
【讨论】: