在 R 和 RStudio 中清除控制台的功能

Posted

技术标签:

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

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

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

【问题讨论】:

这不是一个完全相同的副本,但它非常相关,下面给出了这个问题的答案 - ***.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 包含更多详细信息。 【参考方案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()

【讨论】:

以上是关于在 R 和 RStudio 中清除控制台的功能的主要内容,如果未能解决你的问题,请参考以下文章

在 rstudio 中一次性清除工作区和采购脚本

R.003 Rstudio使用

R语言write函数:使用write函数将数据写入RStudio控制台write函数将数据写入新的Rstudio窗口(启动新的窗口)

dashDB 控制台中 R-studio 的密码是啥?

启动RStudio时出现的问题

防止 Rstudio 控制台显示脚本命令