2014-11-06 40 views
0

當我顯示中的R的對象(在標準的命令行接口),並且該對象是非常長的,R切斷它與消息基於R瀏覽r輸出

[ reached getOption("max.print") -- omitted 538 rows ] 

但仍然能雜波我的終端。

對於我來說,所需的行爲如下所示:如果輸出的行數超過N,則輸出存儲到臨時文本文件,並且文本文件使用較少顯示。

一個解決方案原型使用capture.output

data(iris3) 
t <- tempfile() 
capture.output(print(iris), file=t) 
system(paste0("less ", t)) 

它或多或少我想要什麼,但(我)的股價與終端max.print(不好啊!)和(ii)不運行自動輸出太大時。

有什麼辦法可以達到這個目的嗎?至少解決上面的(i)會有很大的幫助(例如capture.output可以在沒有限制的情況下工作,或者與終端中的限制不同)。

回答

1

sink()函數可以將所有輸出發送到文本文件,而不會堵塞控制檯。但是,我不知道如何才能執行它只有當輸出超過預定義的閾值。

data(iris3) 
zz <- file("longoutput.txt", open = "wt") 
sink(zz) 
sink(zz, type = "message") 

iris # object to print 

## back to the console 
sink(type = "message") 
sink() 
file.show("longoutput.txt") 
+0

不幸的是,如果我在接收器中使用print(),我仍然有max.print的問題。 – January 2014-11-07 07:58:21

+0

你是否一定需要使用'print()'函數? (請參閱我的代碼編輯)。 – GPierre 2014-11-07 08:17:14