在 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 <- 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 中清除控制台的功能的主要内容,如果未能解决你的问题,请参考以下文章
R语言write函数:使用write函数将数据写入RStudio控制台write函数将数据写入新的Rstudio窗口(启动新的窗口)