2013-07-04 13 views
9

getOption("max.print") può essere utilizzato per limitare il numero di valori che possono essere stampati da una singola chiamata di funzione. Ad esempio:Interrompere la stampa dopo n numero di linee

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

stampa solo le prime 10 righe di 2 colonne. Tuttavia, max.print non funziona molto bene liste. Soprattutto se sono nidificati in profondità, la quantità di linee stampate sulla console può ancora essere infinita.

C'è un modo per specificare un taglio più duro della quantità che può essere stampata sullo schermo? Ad esempio specificando la quantità di linee dopo la quale la stampa può essere interrotta? Qualcosa che protegge anche dalla stampa di enormi oggetti ricorsivi?

risposta

4

basata in parte su this question, vorrei suggerire solo la costruzione di un wrapper per print che utilizza capture.output di regolare ciò che viene stampato:

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

Ad esempio:

> 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

Il motivo principale per cui voglio limitare l'output è a causa delle prestazioni; la stampa può essere molto lenta. Quindi questo non lo impedirà. – Jeroen

+1

Sì, è assolutamente vero perché tutto ciò che sta facendo è scrivere su un textConnection e poi estrarre il primo n numero di righe. – Thomas

Problemi correlati