2013-12-26 1 views
3
tidy.source(source = "ugly.R", 
      file = "pretty.R", 
      reindent.spaces = 2, 
      width.cutoff = 72) 

выше не обернуть код в колонке 72, мой выход был следующим:formatR width.cutoff вопрос

pwr.norm.test(d = (19.4 - 18.4)/2.8, n = 100, sig.level = 0.05, alternative = "two.sided") 
pwr.norm.test(d = (18.9 - 18.4)/2.8, n = 200, sig.level = 0.05, alternative = "two.sided") 
pwr.norm.test(d = (18.4 - 18.4)/2.8, n = 10000, sig.level = 0.05, alternative = "two.sided") 

ли я сделать это неправильно? Кроме того, после форматирования не было места до и после знака "/". Правильно ли это было? Благодарю.

ответ

2

width.cutoff указывает минимальную длину, с которой проверяется прерывание линии, а не максимальная длина линии. Таким образом, в этом случае он не начнет попытки разрыва строки, пока он не окажется в середине слова alternative. tidy.source также не разделяет назначения, поэтому он не находит места для разрыва до конца строки.

Кроме того, похоже, что tidy.source не вставляет пробелы до и после слэшей - это поведение наследуется от deparse, которое оно использует.

+1

так, как добиться желаемого разрыва строки в столбце x? – dwstu

+2

@Yihui, может быть, вы можете помочь объяснить? Как добиться желаемого разрыва строки в столбце x? Благодарю. – dwstu

0

Проблема с базой R функции: deparse.

I forked formatR и сделал взломанный способ использования этих функций. Вы можете установить с помощью:

library(devtools) 
install_github("pablo14/formatR") 

Он работает в большинстве случаев я проверил (целую книгу). Но, пожалуйста, сделайте свои собственные проверки и подумайте о возврате в исходный репозиторий после того, как получите готовые линии.

Что я сделал:

Внутренняя функция tidy_block (которая вызывает deparse) N раз, пока ширина критериев выполняется. В противном случае возвращается исходное значение. Решить все случаи невозможно, но работает лучше, чем оригинальная версия.

Связанные запрос мерзавец тянуть: https://github.com/yihui/formatR/pull/71

Что делать, если она не работает?

Если линии по-прежнему остаются за пределами полей, вам необходимо установить tidy=FALSE, а затем добавить Enter (новая линия) вручную (подсчет количества символов в строке).

Надеюсь, это поможет!

Смежные вопросы