2011-05-10 63 views
2

公式打印方法不考慮環境寬度選項。是否有可能讓print.formula尊重環境寬度選項?

例如,給定以下長式:

fo <- y ~ factor1 + factor2 + factor3 + factor4 + factor5 + factor6 + factor7 + factor8 

設置環境寬度相當窄

options(width=30) 

和打印式

print(fo) 

結果(不管該寬度選項)

y ~ factor1 + factor2 + factor3 + factor4 + factor5 + factor6 + 
    factor7 + factor8 

任何想法如何使print.formula尊重寬度選項?

回答

0

我結束了一個悅目不同的方法去:

print.f <- function(f) { 
    cat(paste(deparse(f, width.cutoff=getOption("width")), collapse="\n")) 
} 

,尊重環境的寬度設置,同時打印具有正確縮進的裸(不是字符串向量)公式。

2

你可以用print.formula進行破解,但要做的事情很簡單,就是將輸出包裝在strwrap中,這相當於getOption("width")

貓(strwrap(FO),九月= 「\ n」)

轉換爲字符調換的前兩個元素,所以你首先需要做一些固定起來。

ch_fo <- paste(as.character(fo)[c(2,1,3)], collapse = " ") 
cat(strwrap(ch_fo), sep = "\n") 

使用deparse是另一種選擇。

deparse(fo, width.cutoff = getOption('width')) 
+1

實際上,你不能輕易使用print.formula進行破解。如果你想完成任何事情,你將不得不繞過內部的print.default。所以我會去打理... – 2011-05-10 14:36:38

2

您可以使用strwrapcapture.output組合:

fo <- y ~ factor1 + factor2 + factor3 + factor4 + factor5 + factor6 + factor7 + factor8 
options(width=30) 
strwrap(capture.output(print(fo))) 

[1] "y ~ factor1 + factor2 +" 
[2] "factor3 + factor4 +"  
[3] "factor5 + factor6 +"  
[4] "factor7 + factor8"  
相關問題