2013-07-04 13 views
9

Die getOption("max.print") kann verwendet werden, um die Anzahl der Werte zu begrenzen, die bei einem einzelnen Funktionsaufruf gedruckt werden können. Beispiel:Drucken nach n Zeilenanzahl stoppen

options(max.print=20) 
print(cars) 

druckt nur die ersten 10 Zeilen mit 2 Spalten. max.print funktioniert jedoch nicht sehr gut Listen. Besonders wenn sie tief verschachtelt sind, kann die Anzahl der Zeilen, die auf die Konsole gedruckt werden, immer noch unendlich sein.

Gibt es eine Möglichkeit, einen härteren Grenzwert für die Menge anzugeben, die auf den Bildschirm gedruckt werden kann? Zum Beispiel durch Angabe der Zeilenanzahl, nach der der Druck unterbrochen werden kann? Etwas, das auch davor schützt, riesige rekursive Objekte zu drucken?

Antwort

4

teil Basierend auf this question, würde ich nur den Aufbau einer Wrapper für print vorschlagen, die capture.output zu regeln verwendet, was gedruckt wird:

print2 <- function(x, nlines=10,...) 
    cat(head(capture.output(print(x,...)), nlines), sep="\n") 

Zum Beispiel:

> print2(list(1:10000,1:10000)) 
[[1]] 
    [1]  1  2  3  4  5  6  7  8  9 10 11 12 
    [13] 13 14 15 16 17 18 19 20 21 22 23 24 
    [25] 25 26 27 28 29 30 31 32 33 34 35 36 
    [37] 37 38 39 40 41 42 43 44 45 46 47 48 
    [49] 49 50 51 52 53 54 55 56 57 58 59 60 
    [61] 61 62 63 64 65 66 67 68 69 70 71 72 
    [73] 73 74 75 76 77 78 79 80 81 82 83 84 
    [85] 85 86 87 88 89 90 91 92 93 94 95 96 
    [97] 97 98 99 100 101 102 103 104 105 106 107 108 
+0

Der Hauptgrund, warum ich will die Leistung zu begrenzen ist wegen der Leistung; Druck kann sehr langsam sein. Das wird das nicht verhindern. – Jeroen

+1

Ja, das ist definitiv richtig, denn all dies geschieht, indem man in eine textConnection schreibt und dann die ersten n Zeilen herauszieht. – Thomas