Stop printing after n number of lines
Asked Answered
L

1

9

The getOption("max.print") can be used to limit the number of values that can be printed from a single function call. For example:

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

prints only the first 10 rows of 2 columns. However, max.print doesn't work very well lists. Especially if they are nested deeply, the amount of lines printed to the console can still be infinite.

Is there any way to specify a harder cutoff of the amount that can be printed to the screen? For example by specifying the amount of lines after which the printing can be interrupted? Something that also protects against printing huge recursive objects?

Leeann answered 4/7, 2013 at 20:1 Comment(0)
R
4

Based in part on this question, I would suggest just building a wrapper for print that uses capture.output to regulate what is printed:

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

For example:

> 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
Reply answered 4/7, 2013 at 21:47 Comment(2)
The main reason why I want to limit output is because of performance; print can be very slow. So this is not going to prevent that.Leeann
Yes, that's definitely true because all this is doing is writing to a textConnection and then pulling out the first n number of lines.Reply

© 2022 - 2024 — McMap. All rights reserved.