Можно ли сделать так, чтобы print.formula учитывал параметр ширины окружения? - PullRequest
2 голосов
/ 10 мая 2011

Метод печати формулы не учитывает параметр ширины среды.

Например, с помощью следующей длинной формулы:

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 ]

2 голосов
/ 10 мая 2011

Вы можете использовать комбинацию 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 голосов
/ 10 мая 2011

Вы можете взломать с помощью 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'))
0 голосов
/ 12 мая 2011

Я закончил с совершенно другим подходом:

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

Он учитывает настройку ширины среды при печати формулы «голый» (не строковой вектор) с правильным отступом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...