在n行之后停止打印

时间:2013-07-04 20:01:18

标签: r cran

getOption("max.print")可用于限制可从单个函数调用打印的值的数量。例如:

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

仅打印2列的前10行。但是,max.print列表效果不佳。特别是如果它们被深深嵌套,打印到控制台的线条数量仍然是无限的。

有没有办法指定可以打印到屏幕的数量的更难截止?例如,通过指定可以中断打印的行数量?什么东西也可以防止打印巨大的递归对象?

1 个答案:

答案 0 :(得分:4)

部分基于this question,我建议只为print构建一个使用capture.output来管理打印内容的包装器:

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

例如:

> 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