2016-04-21 150 views
0

在R控制台中可以抑制所有输出,但是cat/print/similar?在R中抑制输出

我使用SublimeRepl进行Sublime Text,我很想在执行一行时抑制回声(类似于matlab/octave中的“;”),但保留cat/print或类似命令的输出原因。

有什么想法?

+0

你能举出一些具体的例子 – rawr

+0

Ehmmm,打开一个R控制台并写入“x = 1”,然后按回车键,上面一行就会说“x = 1“,这就是我想压制的东西。在matlab中,您只需在行 - >“x = 1;”之后添加一个分号然后输出被抑制,我在R寻找同样的东西。 – Ghost

+0

这就是我认为你的意思。我甚至不明白为什么这样做可能更不用说了。您想在控制台中输入一些代码,按回车,然后让它消失? – rawr

回答

0

有相当多的R函数通过invisible函数返回值。他们将cat一些有限的值,但返回的对象将会大得多。例如见的lm代码:

> invisible(strsplit(as.character(35600), split="..$")) 
> invisible(print(strsplit(as.character(35600), split="..$"))) 
[[1]] 
[1] "356" 

R控制台的工作方式默认为读-EVAL-打印循环,你需要模拟读取和eval段,但随后无形的值返回到工作区。我想你可能需要重写readline函数才能让控制台输出消失。可能还需要拨打stdinstdout连接。需要阅读R内部文件的第1.6节“自动打印”。它让我怀疑你是否可以用R_Visible变量重新编译R来设置为FALSE。那部分说“真正的自动打印是通过文件print.c中的PrintValueEnv完成的”