Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Stop printing after n number of lines

Tags:

r

cran

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?

like image 976
Jeroen Ooms Avatar asked Jul 04 '13 20:07

Jeroen Ooms


1 Answers

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
like image 61
Thomas Avatar answered Nov 03 '22 17:11

Thomas