公式打印方法不考虑环境宽度选项。
例如,给定以下长公式:
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 :(得分: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)
您可以结合使用strwrap
和capture.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"))
}
它尊重环境的宽度设置,同时使用正确的缩进打印裸体(不是字符串向量)公式。