【问题标题】:Suppress output in R抑制 R 中的输出
【发布时间】:2016-04-21 22:43:21
【问题描述】:

是否可以在 R 控制台中抑制除 cat/print/similar 之外的所有输出?

我将 SublimeRepl 用于 Sublime Text,我希望在执行一行时抑制回声(类似于 matlab/octave 中的“;”),但出于明显的原因保留 cat/print 或类似命令的输出.

有什么想法吗?

【问题讨论】:

  • 能否举一些具体的例子
  • Ehmmm,打开一个 R 控制台并输入“x=1”,然后按回车键,上面的行会显示“x=1”,这就是我想要抑制的。在 matlab 中,您只需在行后添加一个分号 -> "x=1;"然后输出被抑制,我在 R 中寻找同样的东西。
  • 这就是我以为你的意思。我什至不明白为什么这是可能的,更不用说可取了。你想在控制台中输入一些代码,按回车键,然后让它消失吗?
  • 是的..?实际上,这正是 RStudio 所做的,或者当您使用 rscript 而不是使用控制台执行文件时..

标签: r sublimetext sublimerepl


【解决方案1】:

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

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

默认情况下,R 控制台作为读取-评估-打印循环工作,您需要模拟读取和评估段,然后以不可见的方式将值返回到工作区。我认为您可能需要重写 readline 函数才能使控制台输出空白。并且可能还需要摆弄stdinstdout 连接。需要阅读 R Internals 文档的第 1.6 节“自动打印”。这让我想知道您是否可以在将R_Visible 变量设置为 FALSE 的情况下重新编译 R。该部分说“实际的自动打印由文件 print.c 中的 PrintValueEnv 完成”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2018-08-23
    • 2016-03-07
    相关资源
    最近更新 更多