Изменения

R:Оформление кода

3856 байтов добавлено, 10:53, 2 апреля 2014
м
Нет описания правки
{{r-code|code=<nowiki>plot(x,y, lwd = 4, col = green, main = "My Title")</nowiki>}}
 
== Функция <code>tidy.source()</code> ==
 
Пакет {{r-package|formatR}} содержит функцию <code>tidy.source()</code>, которая позволяет отформатировать исходный код согласно заранее определённым правилам (аргументам). Функцию поддерживает ввод из буфера обмена (<code>source = "clipboard"</code>), файла (<code>source = "filename"</code>) или переменной (<code>source = varname</code>), являющейся вектором строк (character vector). Вывод результатов работы функции может перенаправлен в консоль (<code>output = TRUE</code>) или файл (<code>file = "filename"</code>).
 
В качестве настроек форматирования можно указать:
 
* сохранять комментарии (аргумент <code>keep.comment</code>, по умолчанию <code>TRUE</code>);
* сохранять пустые строки (аргумент <code>keep.blank.line</code>, по умолчанию <code>TRUE</code>);
* заменять оператор присвоения с <code>=</code> на <code><-</code> (аргумент <code>replace.assign</code>, по умолчанию <code>FALSE</code>);
* ставить открывающуюся фигурную скобку (<code>{</code>) на новую строку (аргумент <code>left.brace.newline</code>, по умолчанию <code>FALSE</code>);
* количество пробелов, использующихся для отступов (аргумент <code>reindent.spaces</code>. по умолчанию 4 пробела);
* количество символов, при достижении которого текст переносится на новую строку (аргумент <code>idth.cutoff</code>, по умолчанию равен опции <code>width</code>).
 
Для демонстрации работы функции <code>tidy.source()</code> возьмём файл <code>messy.R</code>, который поставляется в составе пакета {{r-package|formatR}}. Вот его содержимое:
 
{{file
|subtitle=messy.R
|lang=r
|code=
<nowiki> # a single line of comments is preserved
1+1
 
if(TRUE){
x=1 # inline comments
}else{
x=2;print('Oh no... ask the right bracket to go away!')}
1*3 # one space before this comment will become two!
2+2+2 # 'short comments'
 
lm(y~x1+x2, data=data.frame(y=rnorm(100),x1=rnorm(100),x2=rnorm(100))) ### only 'single quotes' are allowed in comments
1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1 ## comments after a long line
'a character string with \t in it'
 
## here is a long long long long long long long long long long long long long long long long long long long long comment
</nowiki>
}}
 
Результат работы функции:
 
{{r-code
|code=
<nowiki>
> library(formatR)
> options(width = 80)
> tidy.source(source = paste0(.libPaths()[1], "/formatR/format/messy.R"), replace.assign = TRUE)
# a single line of comments is preserved
1 + 1
 
if (TRUE) {
x <- 1 # inline comments
} else {
x <- 2
print("Oh no... ask the right bracket to go away!")
}
1 * 3 # one space before this comment will become two!
2 + 2 + 2 # 'short comments'
 
lm(y ~ x1 + x2, data = data.frame(y = rnorm(100), x1 = rnorm(100), x2 = rnorm(100))) ### only 'single quotes' are allowed in comments
1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 +
1 + 1 ## comments after a long line
"a character string with \t in it"
 
## here is a long long long long long long long long long long long long long long
## long long long long long long comment</nowiki>
}}
== Общая логика и порядок написания скриптов ==
=== Ссылки ===
 
* R Style. An Rchaeological Commentary - http://cran.r-project.org/web/packages/rockchalk/vignettes/Rstyle.pdf
* Google's R Style Guide - http://google-styleguide.googlecode.com/svn/trunk/Rguide.xml