Funkcja czyszczenia konsoli w R i RStudio


319

Zastanawiam się, czy istnieje funkcja czyszczenia konsoli w R, a w szczególności RStudio Szukam funkcji, którą można wpisać w konsoli, a nie skrótu klawiaturowego.

Ktoś już udostępnił taką funkcję w tym poście StackExchange z 2010 roku . Niestety zależy to od pakietu RCom i nie będzie działać w systemie Mac OS X.


Nie jest to dokładny duplikat, ale jest dość ściśle powiązany, a odpowiedź na to pytanie została podana poniżej - stackoverflow.com/questions/8421005/…
Dason

Pisz tylko za clcpomocą tego skryptu clc.R, który opracowuję. Jak to działa? clc<-0; class(clc) <- 'cleanup'; print.cleanup <- function(cleanupObject) cat("\f"). Ostatnia linia odpowiada RStudio, ale w terminalu zmień ją o print.cleanup <- function(cleanupObject) cat(c("\033[2J","\033[H")). Plik clc.R zawiera więcej szczegółów.
HubertRonald

Odpowiedzi:


545
cat("\014")  

to kod do wysłania CTRL+ Ldo konsoli i dlatego wyczyści ekran.

Znacznie lepiej niż wysyłanie wielu zwrotów.


14
To po prostu drukuje pojedynczą pustą linię na moim interaktywnym terminalu (zarówno na Ubuntu, jak i Mac OSX)
Scott Ritchie

2
Pracuje dla mnie. Może to również pomóc w bardzo powolnym błędzie konsoli w Rstudio.
Ruben

10
Działa w RStudio na Macu, ale nie w R.app! W R.app polecenie Cmd + Alt + L czyści ekran, a nie Ctrl + L ... Czy istnieje podobny „kod” do wysłania tej kombinacji klawiszy do R.app? (Widzę, że \ 014 to kod ASCII dla Form Feed, więc myślę, że nie wysyła on kombinacji klawiszy, ale tylko polecenie Form Feed, co sprawia, że ​​jest mało prawdopodobne, aby istniał „kod” dla Cmd + Alt + L.)
Johan

2
nie działa dla mnie konsola Windows 7, R. (r.exe).
Nie wie

7
Działa to tylko w RStudio w systemie Windows, a nie w „zwykłej” konsoli R ani w konsoli DOS. Dla przypomnienia, jest to także znak Form Feed i możesz po prostu pisać cat("\f").

103

Jeśli używasz domyślnej konsoli R., kombinacja klawiszy Option+ Command+ Lwyczyści konsolę.


20
CTRL-L na wypadek, gdybyś myślał, że to „ja”, jak ja :)
Neil McGuigan

5
Ctrl + L dla Rstudio również na OSX Yosemite.
ThinkBonobo,

7
To nie odpowiada na pytanie. OP chciał funkcji i wyraźnie nie mówił skrótu klawiaturowego.
demongolem

34

Możesz zdefiniować następującą funkcję

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

którą możesz nazwać jako clc().


24

W Ubuntu-Gnome , naciśnięcie CTRL+ Lpowinno wyczyścić ekran.

Wydaje się, że działa to również dobrze w systemach Windows 10 i 7 oraz Mac OS X Sierra.


23

cat("\f")może być łatwiejsze do zapamiętania niż cat("\014").

Działa dla mnie dobrze w systemie Windows 10.


19

shell("cls") jeśli w systemie Windows

shell("clear") jeśli w systemie Linux lub Mac.

( shell()przekazuje polecenie (lub dowolny ciąg) do terminala hosta.)


1
To zadziałało. Nie jest tak elegancki jak inne odpowiedzi, ale o wiele łatwiejszy do zapamiętania.
Martini Bianco

2
To jedyne polecenie, które działało dla mnie w konsoli Rterm w systemie Windows 10 ... ale co za ból, że trzeba to wszystko pisać ...
Michael Szczepaniak

Tak, właśnie się tego nauczyłem - używam również terminala R w systemie Windows 10 (znacznie łatwiej niż ładowanie RStudio) - i jest to przydatne, aby móc przekazywać polecenia do powłoki. Wierzę, że w R jest sposób na „mapowanie” sekwencji znaków na określone polecenie, chociaż nie pamiętam dokładnie, jak to zrobić - myślę, że to trochę jak alias w bashu, a może to coś więcej jak funkcja - ale możesz to zrobić, aby zmniejszyć ilość pisania. (Na przykład myślę, że można to ustawić w miejscu, w którym coś działa clr()lub clruruchamia polecenie shell("cls")lub shell("clear").)
Ryan Blanchard

1
Podobnie, był to jedyny, który działał zarówno dla RStudio, jak i dla moich okien powłoki Windows 7 (cmd.exe). Do .Rprofile dodałem: clear_fun <- function() shell("cls"); makeActiveBinding("cls", clear_fun, baseenv());

1
Działa to dla terminala w programie Visual Studio Code w systemie Windows.
Bill Wallis

12

Opracowałem pakiet R, który to zrobi, zapożyczając z powyższych sugestii. Pakiet jest wywoływany mise, jak w „mise en place”. Możesz go zainstalować i uruchomić za pomocą

install.packages("mise")
library(mise)
mise()

Pamiętaj, że mise()usuwa również wszystkie zmienne i funkcje i domyślnie zamyka wszystkie liczby. Aby wyczyścić konsolę, użyj mise(vars = FALSE, figs = FALSE).


12

Oto funkcja:

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

wtedy możesz po prostu to wywołać, tak jak wywołujesz dowolną inną funkcję R clear(). , .

Jeśli wolisz po prostu pisać clear(zamiast pisać clear(), tj. W nawiasach), możesz to zrobić

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

2
Podobnie jak \014podejście, takie podejście daje mi śmieszne postacie (z konsoli R na komputerze z systemem Windows 10).
demongolem

W przeciwieństwie do \ 014 (lub \ f) działało to dla mnie na Windows 10 w Rterm.
Martini Bianco

@MartiniBianco: Myślę, że odpowiedzi tutaj powinny pomóc. Zasadniczo „\ 033” to „ESC”. „[2J” i „[0; 0H” usuwają ekran i przesuwają kursor odpowiednio w lewym górnym rogu.
jvd10,



3

W system("clear")systemie Linux użyj do wyczyszczenia ekranu.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.