是否可以使print.formula尊重环境宽度选项?

时间:2011-05-10 14:20:09

标签: r

公式打印方法不考虑环境宽度选项。

例如,给定以下长公式:

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尊重宽度选项?

3 个答案:

答案 0 :(得分:2)

你可以使用print.formula进行攻击,但最简单的方法是将输出包装在strwrap中,这会尊重getOption("width")

cat(strwrap(fo),sep =“\ 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 :(得分: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"      

答案 2 :(得分:0)

我的结果略有不同:

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

它尊重环境的宽度设置,同时使用正确的缩进打印裸体(不是字符串向量)公式。