2011-05-10 66 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"  
相关问题