我正在使用script.R
从Rstudio
运行数百个代码行,但与Matlab
相比让我感到恼火的是Rstudio
控制台保持机械地显示我的脚本文件中的每个command line
。有没有办法防止这种情况发生?
令人沮丧的部分,例如当一个人使用sprintf()
时,来自脚本文件的命令行与控制台中的sprintf()
混合在一起。< / p>
最佳,
答案 0 :(得分:8)
使用ctrl+shift+S
运行您的代码。或者转到script.R
右上角的来源,然后只运行Source
而不是Source with echo
。而且,至于您对打印@Konrad Rudolph的要求,建议使用消息message("%f", pi)
是最佳解决方案。
如果打印邮件旨在跟踪代码的状态,请参考以下一些有用的解决方案showing a status message in R
答案 1 :(得分:1)
与Matlab的sprintf
一样,R的sprintf
只创建一个字符串,它不会将其打印到输出。*您必须显式调用print
函数才能看到任何内容:< / p>
print(sprintf("%f", pi)) # prints
普通sprintf
正式创建一个字符串,然后丢弃它,因为它没有保存到变量中:
sprintf("%f", pi) # does nothing
但是,这种方法对你有用,因为REPL(一次运行一行R代码的命令行)违反了指令以丢弃未保存到变量的值,而是打印它们。这是一个方便的事情,使它更容易在命令行工作。您可以键入1+1
并让它打印2
,即使R脚本通常会默默地丢弃该值。
将文本打印到控制台的其他功能是cat
和message
,它们各自略有不同。请参阅他们的帮助文件以供使用。
*从技术上讲,Matlab将打印任何未被;
终止的语句的值,包括字符串。因此,如果没有分号,sprintf
产生的字符串可以打印,虽然它不是由sprintf
直接完成,而是由Matlab的通用打印所有事物行为。在我看来,这是一个奇怪的功能。
答案 2 :(得分:1)
只需将您要从控制台抑制的代码行放在()之间:
1+1
output looks:
> 1+1
[1] 2
(1+1)
output looks:
> [1] 2
答案 3 :(得分:0)
如果您只想运行script.R
,请尝试使用source
功能。
source("script.R") # assuming script.R is in your working directory.
此函数将运行脚本,而不会在命令行中显示所有内容。