【问题标题】:Function to clear the console in R and RStudio在 R 和 RStudio 中清除控制台的功能
【发布时间】:2012-12-24 23:35:42
【问题描述】:

我想知道 R 中是否有清除控制台的功能,特别是 RStudio,我正在寻找可以在控制台中键入的功能,而不是键盘快捷键。

this StackExchange post from 2010已经有人提供了这样的功能。不幸的是,这取决于 RCom 包,不能在 Mac OS X 上运行。

【问题讨论】:

  • 这不是一个完全相同的副本,但它非常相关,下面给出了这个问题的答案 - stackoverflow.com/questions/8421005/…
  • 仅使用我开发的此脚本clc.R 键入clc。它是如何工作的? clc<-0; class(clc) <- 'cleanup'; print.cleanup <- function(cleanupObject) cat("\f")。最后一行对应于 RStudio,但在终端中将其更改为 print.cleanup <- function(cleanupObject) cat(c("\033[2J","\033[H"))clc.R 包含更多详细信息。

标签: r


【解决方案1】:

你可以定义如下函数

clc <- function() cat(rep("\n", 50))

然后您可以将其称为clc()

【讨论】:

  • 这不会清除控制台,而是插入 50 条空行,将输出向上推。
【解决方案2】:
cat("\014")  

是将 CTRL+L 发送到控制台的代码,因此将清除屏幕。

比仅仅发送大量退货要好得多。

【讨论】:

  • 这只是在我的交互式终端上打印一个空行(在 Ubuntu 和 Mac OSX 上)
  • 为我工作。这也可能有助于解决 Rstudio 中 非常慢的控制台-bug。
  • 适用于 Mac 上的 RStudio,但不适用于 R.app!在 R.app 中,命令 Cmd+Alt+L 清除屏幕,而不是 Ctrl+L... 是否有类似的“代码”将该组合键发送到 R.app? (我看到 \014 是 Form Feed 的 ASCII 代码,所以我猜它不是发送组合键,而只是发送 Form Feed 命令,这使得 Cmd+Alt+L 的“代码”不太可能存在。)
  • 对我不起作用。 Windows 7,R 控制台。 (r.exe)。
  • 这仅适用于 Windows 上的 RStudio,不适用于“通常的”R 控制台或 DOS 控制台。作为记录,它也是换页符,你可以输入cat("\f")
【解决方案3】:

如果您使用默认的 R 控制台,组合键 Option + Command + L 将清除控制台。

【讨论】:

  • CTRL-L 以防万一你认为那是一个“i”,就像我一样 :)
  • Ctrl + L 也适用于 OSX Yosemite 上的 Rstudio。
  • 这没有回答问题。 OP想要一个功能,并明确表示不是键盘快捷键。
【解决方案4】:

Ubuntu-Gnome 中,只需按 CTRL+L 即可清除屏幕。

这似乎也适用于 Windows 10 和 7 以及 Mac OS X Sierra。

【讨论】:

    【解决方案5】:

    cat("\f") 可能比cat("\014") 更容易记住。

    我在 Windows 10 上运行良好。

    【讨论】:

      【解决方案6】:

      这是一个函数:

      clear <- function() cat(c("\033[2J","\033[0;0H"))
      

      然后你可以简单地调用它,就像你调用任何其他 R 函数一样,clear()

      如果您更喜欢简单地输入clear(而不是必须输入clear(),即使用括号),那么您可以这样做

      clear_fun <- function() cat(c("\033[2J","\033[0;0H"));
      makeActiveBinding("clear", clear_fun, baseenv())
      

      【讨论】:

      • 很像 \014 方法,这种方法给了我有趣的字符(来自 Windows 10 机器上的 R 控制台)。
      • 与 \014(或 \f)不同,这在 Rterm 中的 Windows 10 上对我有用。
      • @MartiniBianco:我认为here 的答案应该会有所帮助。基本上“\033”是“ESC”。 “[2J”和“[0;0H”分别清屏并将光标移到左上角。
      【解决方案7】:

      借鉴上述建议,我开发了一个 R 包来执行此操作。该包名为mise,如“mise en place”。您可以使用

      安装和运行它
      install.packages("mise")
      library(mise)
      mise()
      

      请注意mise() 默认情况下还会删除所有变量和函数并关闭所有图形。要清除控制台,请使用mise(vars = FALSE, figs = FALSE)

      【讨论】:

        【解决方案8】:

        您可以结合以下两个命令

        cat("\014"); 
        cat(rep("\n", 50))
        

        【讨论】:

          【解决方案9】:

          shell("cls") 如果在 Windows 上,

          shell("clear") 如果在 Linux 或 Mac 上。

          shell() 将命令(或任何字符串)传递给主机终端。)

          【讨论】:

          • 这行得通。它不像其他答案那样优雅,但更容易记住。
          • 这是在 Windows 10 上的 Rterm 控制台中对我有用的唯一命令......但是必须输入所有这些内容真是太痛苦了......
          • 同样,这是唯一适用于 RStudio 和我的 Windows 7 shell (cmd.exe) 窗口的软件。到 .Rprofile 我添加了:clear_fun &lt;- function() shell("cls"); makeActiveBinding("cls", clear_fun, baseenv());
          • 这适用于 Windows 上 Visual Studio Code 中的终端。
          • shell("cls") 是唯一对我有用的,如果我在 snippet 的代码中使用它
          【解决方案10】:

          如果您使用默认的 R 控制台 CTRL + L

          RStudio - CTRL + L

          【讨论】:

          • 也适用于 macOS
          • 问题要求一个功能,并明确表示不想要键盘快捷键!
          【解决方案11】:

          在linux中使用system("clear")清屏。

          【讨论】:

            【解决方案12】:

            猫(“\014”)。这将起作用。不用担心

            【讨论】:

              【解决方案13】:

              RStudio 的另一个选项是rstudioapi::sendToConsole("\014")。即使输出被转移,这也会起作用。

              sink("out.txt")
              
              cat("\014") # Console not cleared
              
              rstudioapi::sendToConsole("\014") # Console cleared
              
              sink()
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2022-06-25
                • 2018-03-25
                • 1970-01-01
                • 2013-11-22
                相关资源
                最近更新 更多