2010-05-16 6 views
19

Gibt es ein Äquivalent zum UNIX-Befehl less, der in der R-Konsole verwendet werden kann?Entspricht dem Unix-Befehl "less" in der R-Konsole

+0

Sind Sie versuchen, Dinge im Dateisystem oder in der R-Umgebung zu betrachten (ich nehme letzteres an)? – Shane

+1

Innerhalb der R-Umgebung. Zum Beispiel, wenn ich einen mittelgroßen Datenrahmen "drucke", möchte ich in der Lage sein, durch ihn zu scrollen. – fmark

Antwort

31

verwenden Es gibt auch page() die Zeigt eine Darstellung eines Objekts in einem Pager an, wie weniger.

dat <- data.frame(matrix(rnorm(1000), ncol = 10)) 
page(dat, method = "print") 
+1

Perfekt, genau das, was ich gesucht habe! – fmark

+2

Wenn ich '' Seite (Daten, Methode = "Drucken") 'in RStudio in Windows 8 ausführen, bekomme ich eine Eingabeaufforderung" Wie möchten Sie diesen Dateityp öffnen? " mit nur Option "Suchen Sie nach einer App im Store". Sehen andere das, wie kann ich es zum Laufen bringen? – yic

11

Nicht wirklich. Es gibt die Befehle

  • head() und tail() zu zeigen den Anfang und das Ende von Objekten
  • print() explizit ein Objekt zeigen, und nur sein Name durch Rückkehr gefolgt tut die gleichen
  • summary() für knappe Zusammenfassung, die abhängig auf das Objekt
  • str() für seine Struktur

und mehr. Ein Äquivalent für less wäre ein wenig orthogonal zu der Sprache und dem System. Wenn die Unix-Shell Ihnen less anbietet, um den Inhalt einer Datei anzuzeigen (die vermutlich ASCII-codiert ist), kann sie nicht über alle Typen Bescheid wissen.

R unterscheidet sich darin, dass es über die Objekttypen weiß, weshalb summary() - sowie das gesamte Modellierungs-Framework - besser geeignet sind.

Follow-up edit: Eine weitere Möglichkeit durch edit() sowie edit.data.frame() vorgesehen ist.

+0

Danke für die informative Antwort. Ich würde nicht zustimmen, dass "weniger" unangemessen wäre - die Hauptfunktion, für die ich weniger verwende, ist das Scrollen von Zeichenfolgenpuffern in einer Konsole. Die R-Konsole gibt viele Zeichenfolgenpuffer aus. Ich dachte, vielleicht könnte es hier eine Pufferfunktion für das Scrollen geben. – fmark

+1

Sie können immer 'system (" less ")' ... verwenden, natürlich, wenn Sie eines der * NIX-Systeme verwenden ... – aL3xa

+1

fmark: Eine weitere Möglichkeit bieten 'edit()' und 'edit.data.frame() 'was Sie versuchen könnten. –

6

Ich speichere die Druckausgabe in eine Datei und lese sie dann mit einem Editor oder less.

Geben Sie folgende in R

sink("Routput.txt") 
print(varname) 
sink() 

Dann in einer Schale:

less Routput.txt 
+0

Funktioniert gut, wenn Sie durch das str() eines großen Datensatzes scrollen möchten (Seite() funktioniert dafür nicht) – dahved

0

Wenn die Datei bereits auf der Festplatte ist, dann können Sie file.show

1

Sie könnten hier mein kleines Spielzeug mag:

short <- function(x=seq(1,20),numel=4,skipel=0,ynam=deparse(substitute(x))) { 
ynam<-as.character(ynam) 
#clean up spaces 
ynam<-gsub(" ","",ynam) 
#unlist goes by columns, so transpose to get what's expected 
if(is.list(x)) x<-unlist(t(x)) 
if(2*numel >= length(x)) { 
    print(x) 
    } 
    else { 
     frist=1+skipel 
     last=numel+skipel 
     cat(paste(ynam,'[',frist,'] thru ',ynam,'[',last,']\n',sep="")) 
     print(x[frist:last]) 
     cat(' ... \n') 
     cat(paste(ynam,'[',length(x)-numel-skipel+1,'] thru ', ynam, '[', length(x)-skipel,']\n',sep="")) 
     print(x[(length(x)-numel-skipel+1):(length(x)-skipel)]) 
     } 
} 

blahblah Copyright von mir, nicht Disney blahblah frei für die Verwendung, Wiederverwendung, Bearbeitung, Beregnung auf Wheaties usw.

Verwandte Themen