R Language                
            Создание пакетов с помощью devtools
        
        
            
    Поиск…
Вступление
Эта тема будет посвящена созданию пакетов R с нуля с пакетом devtools.
замечания
Создание и распространение пакетов
Это компактное руководство о том, как быстро создать пакет R из вашего кода. Исчерпывающие документы будут связаны, когда они доступны, и их следует читать, если вы хотите более глубокое знание ситуации. См. Примечания для получения дополнительных ресурсов.
 Каталог, в котором находится ваш код, будет обозначаться как ./ , и все команды предназначены для выполнения из приглашения R в этой папке. 
Создание документации
Документация для вашего кода должна быть в формате, который очень похож на LaTeX.
 Однако для упрощения процесса мы будем использовать инструмент с именем roxygen : 
install.packages("devtools")
library("devtools")
install.packages("roxygen2")
library("roxygen2")
Полную страницу man для roxygen можно найти здесь . Он очень похож на doxygen .
Ниже приведен практический пример о том, как документировать функцию с помощью roxygen :
#' Increment a variable.
#'
#' Note that the behavior of this function
#' is undefined if `x` is not of class `numeric`.
#'
#' @export
#' @author  another guy
#' @name    Increment Function
#' @title   increment
#'
#' @param x   Variable to increment
#' @return    `x` incremented of 1
#'
#' @seealso   `other_function`
#'
#' @examples
#' increment(3)
#' > 4
increment <- function(x) {
  return (x+1)
}
Также рекомендуется создать виньетку (см. Раздел « Создание виньет» ), который является полным руководством по вашему пакету.
Построение скелета упаковки
 Предполагая, что ваш код написан, например, в файлах ./script1.R и ./script2.R , запустите следующую команду, чтобы создать дерево файлов вашего пакета: 
package.skeleton(name="MyPackage", code_files=c("script1.R","script2.R"))
 Затем удалите все файлы в ./MyPackage/man/ . Теперь вы должны составить документацию: 
roxygenize("MyPackage")
 Вы также должны создать справочное руководство из своей документации, используя R CMD Rd2pdf MyPackage из командной строки, запущенной в ./ . 
Выдача свойств пакета
1. Описание пакета
 Измените ./MyPackage/DESCRIPTION соответствии с вашими потребностями. Поля Package , Version , License , Description , Title , Author и Maintainer являются обязательными, другие необязательны. 
 Если ваш пакет зависит от других пакетов, укажите их в поле с именем Depends (версия R <3.2.0) или Imports (версия R> 3.2.0). 
2. Дополнительные папки
 Когда вы запустили сборку скелета, ./MyPackage/ только R/ и man/ subfolders. Однако у него могут быть и другие: 
-  data/: здесь вы можете поместить данные, которые нужны вашей библиотеке, и которые не являются кодом. Он должен быть сохранен как набор данных с расширением.RData, и вы можете загрузить его во время выполнения сdata()иload()
-  tests/: все файлы кода в этой папке будут запускаться во время установки. Если произошла ошибка, установка завершится с ошибкой.
-  src/: для исходных файлов C / C ++ / Fortran (с помощьюRcpp...).
-  exec/: для других исполняемых файлов.
-  misc/: для всего остального.
Завершение и сборка
 Вы можете удалить ./MyPackage/Read-and-delete-me . 
Как и сейчас, ваш пакет готов к установке.
 Вы можете установить его с помощью devtools::install("MyPackage") . 
 Чтобы создать свой пакет в качестве исходного tarball, вам нужно выполнить следующую команду из командной строки в ./ : R CMD build MyPackage 
Распространение вашего пакета
Через Гитуб
 Просто создайте новый репозиторий MyPackage и загрузите все в MyPackage/ в главную ветку. Вот пример . 
Тогда любой может установить ваш пакет из github с помощью devtools:
install_package("MyPackage", "your_github_usename")
Через CRAN
 Ваш пакет должен соответствовать политике репозитория CRAN . Включая, но не ограничиваясь: ваш пакет должен быть межплатформенным (за исключением некоторых особых случаев), он должен пройти R CMD check проверки R CMD check . 
Вот форма подачи . Вы должны загрузить исходный архив.
Создание виньет
Виньетка - это длинный путеводитель по вашему пакету. Документация по функциям замечательна, если вы знаете имя нужной вам функции, но это бесполезно иначе. Виньетка похожа на книгу или научную статью: она может описать проблему, которую ваш пакет предназначен для решения, а затем показать читателю, как его решить.
Виньетки будут созданы полностью в уценке.
Требования
-  Rmarkdown: install.packages("rmarkdown")
- Pandoc
Создание виньетки
devtools::use_vignette("MyVignette", "MyPackage")
 Теперь вы можете редактировать свою виньетку ./vignettes/MyVignette.Rmd . 
Текст в вашей виньетке отформатирован как Markdown .
Единственное дополнение к оригинальному Markdown - это тег, который использует R-код, запускает его, захватывает вывод и переводит его в форматированный Markdown:
```{r}
# Add two numbers together
add <- function(a, b) a + b
add(10, 20)
```
Отобразится как:
# Add two numbers together
add <- function(a, b) a + b
add(10, 20)
## [1] 30
 Таким образом, все пакеты, которые вы будете использовать в ваших виньетках, должны быть указаны как зависимости в ./DESCRIPTION .