2013-07-04 129 views
9

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

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

仅打印2列的前10行。但是,max.print不能很好地工作。特别是如果它们深深嵌套,打印到控制台的行数仍然可以是无限的。

是否有任何方法可以指定可以打印到屏幕上的硬切除量?例如,通过指定可以中断打印的行数?什么也可以防止打印巨大的递归对象?

回答

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 
+0

主要的原因我想限制产量是因为性能;打印速度可能非常慢。所以这不会妨碍这一点。 – Jeroen

+1

是的,这是绝对正确的,因为所有这一切都是写入textConnection,然后拉出前n行。 – Thomas