Szukaj…


Wprowadzenie

Ten temat obejmie tworzenie pakietów R od zera za pomocą pakietu devtools.

Uwagi

  1. Oficjalny podręcznik R do tworzenia pakietów
  2. roxygen2 referencyjny roxygen2
  3. podręcznik referencyjny devtools

Tworzenie i dystrybucja pakietów

Jest to kompaktowy przewodnik na temat szybkiego tworzenia pakietu R z kodu. Wyczerpujące dokumentacje zostaną połączone, jeśli będą dostępne, i należy je przeczytać, jeśli chcesz głębiej poznać sytuację. Zobacz uwagi, aby uzyskać więcej zasobów.

Katalog, w którym znajduje się kod, będzie oznaczony jako ./ , a wszystkie polecenia powinny być wykonywane z wiersza polecenia R w tym folderze.


Tworzenie dokumentacji

Dokumentacja twojego kodu musi mieć format bardzo podobny do LaTeX.

Jednak w celu uproszczenia procesu użyjemy narzędzia o nazwie roxygen :

install.packages("devtools")
library("devtools")
install.packages("roxygen2")
library("roxygen2")

Pełna strona podręcznika użytkownika dla roxygen jest dostępna tutaj . Jest bardzo podobny do doksygen .

Oto praktyczna próbka na temat dokumentowania funkcji za pomocą 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)
}

I oto będzie wynik .

Zalecane jest również utworzenie winiety (patrz temat Tworzenie winiet ), która jest pełnym przewodnikiem po twojej paczce.


Budowa szkieletu pakietu

Zakładając, że Twój kod jest zapisany na przykład w plikach ./script1.R i ./script2.R , uruchom następujące polecenie, aby utworzyć drzewo plików pakietu:

package.skeleton(name="MyPackage", code_files=c("script1.R","script2.R"))

Następnie usuń wszystkie pliki w ./MyPackage/man/ . Musisz teraz skompilować dokumentację:

roxygenize("MyPackage")

Należy również wygenerować podręcznik referencyjny z dokumentacji przy użyciu R CMD Rd2pdf MyPackage z wiersza polecenia uruchomionego w ./ .


Edycja właściwości pakietu

1. Opis opakowania

Zmodyfikuj ./MyPackage/DESCRIPTION zgodnie z ./MyPackage/DESCRIPTION potrzebami. Pola Package , Version , License , Description , Title , Author i Maintainer są obowiązkowe, pozostałe są opcjonalne.

Jeśli Twój pakiet zależy od innych pakietów, określ je w polu o nazwie Depends (wersja R <3.2.0) lub Imports (wersja R> 3.2.0).

2. Opcjonalne foldery

Po uruchomieniu wersji szkieletu ./MyPackage/ miał tylko R/ i man/ podfoldery. Może jednak mieć kilka innych:

  • data/ : tutaj możesz umieścić dane, których potrzebuje twoja biblioteka i które nie są kodem. Musi zostać zapisany jako zestaw danych z rozszerzeniem .RData i można go załadować w czasie wykonywania za pomocą data() i load()
  • tests/ : wszystkie pliki kodu w tym folderze zostaną uruchomione podczas instalacji. Jeśli wystąpi jakikolwiek błąd, instalacja nie powiedzie się.
  • src/ : do plików źródłowych C / C ++ / Fortran potrzebujesz (używając Rcpp ...).
  • exec/ : dla innych plików wykonywalnych.
  • misc/ : dla prawie wszystkiego innego.

Finalizacja i kompilacja

Możesz usunąć ./MyPackage/Read-and-delete-me .

W tej chwili pakiet jest gotowy do zainstalowania.

Możesz zainstalować go za pomocą devtools::install("MyPackage") .

Aby zbudować pakiet jako źródłowy plik archiwalny, musisz wykonać następujące polecenie z wiersza polecenia w ./ : R CMD build MyPackage


Dystrybucja pakietu

Poprzez Github

Wystarczy utworzyć nowe repozytorium o nazwie MyPackage i przesłać wszystko z MyPackage/ do gałęzi master. Oto przykład .

Następnie każdy może zainstalować twój pakiet z github z devtools:

install_package("MyPackage", "your_github_usename")

Poprzez CRAN

Twój pakiet musi być zgodny z Zasadami repozytorium CRAN . W tym między innymi: twój pakiet musi być wieloplatformowy (z wyjątkiem niektórych bardzo szczególnych przypadków), powinien przejść test R CMD check .

Oto formularz zgłoszeniowy . Musisz wgrać kod źródłowy.

Tworzenie winiet

Winieta jest długim przewodnikiem po paczce. Dokumentacja funkcji jest świetna, jeśli znasz nazwę funkcji, której potrzebujesz, ale w przeciwnym razie jest bezużyteczna. Winieta jest jak rozdział w książce lub artykuł akademicki: może opisać problem, który twoja paczka ma rozwiązać, a następnie pokazać czytelnikowi, jak ją rozwiązać.

Winiety zostaną utworzone w całości przy obniżaniu cen.

Wymagania

  • Rmarkdown: install.packages("rmarkdown")
  • Pandoc

Tworzenie winiety

devtools::use_vignette("MyVignette", "MyPackage")

Możesz teraz edytować swoją winietę na stronie ./vignettes/MyVignette.Rmd .

Tekst w winiecie jest sformatowany jako Markdown .

Jedynym dodatkiem do oryginalnego Markdown jest znacznik, który pobiera kod R, uruchamia go, przechwytuje dane wyjściowe i tłumaczy na sformatowany Markdown:

```{r}
# Add two numbers together
add <- function(a, b) a + b
add(10, 20)
```

Wyświetli się jako:

# Add two numbers together
add <- function(a, b) a + b
add(10, 20)
## [1] 30

Dlatego wszystkie pakiety, których użyjesz w swoich winietach, muszą być wymienione jako zależności w ./DESCRIPTION .



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow