R Language
Pakete mit devtools erstellen
Suche…
Einführung
Dieses Thema behandelt die Erstellung von R-Paketen von Grund auf mit dem Paket devtools.
Bemerkungen
Pakete erstellen und verteilen
Dies ist eine kompakte Anleitung zum schnellen Erstellen eines R-Pakets aus Ihrem Code. Umfassende Dokumentationen werden, wenn verfügbar, verlinkt und sollten gelesen werden, wenn Sie die Situation besser verstehen möchten. Siehe Anmerkungen für weitere Ressourcen.
Das Verzeichnis, in dem Ihr Code steht, wird als ./
, und alle Befehle sollen von einer R-Eingabeaufforderung in diesem Ordner aus ausgeführt werden.
Erstellung der Dokumentation
Die Dokumentation für Ihren Code muss in einem Format vorliegen, das LaTeX sehr ähnlich ist.
Wir werden jedoch ein Tool namens roxygen
verwenden, um den Prozess zu vereinfachen:
install.packages("devtools")
library("devtools")
install.packages("roxygen2")
library("roxygen2")
Die vollständige Manpage für roxygen finden Sie hier . Es ist dem Sauerstoff sehr ähnlich.
Hier ein praktisches Beispiel zur Dokumentation einer Funktion mit 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)
}
Und hier wird das Ergebnis sein .
Es wird außerdem empfohlen, eine Vignette zu erstellen (siehe Thema Erstellen von Vignetten ). Dies ist eine vollständige Anleitung zu Ihrem Paket.
Bau des Paketskeletts
Unter der Annahme, dass Ihr Code beispielsweise in die Dateien ./script1.R
und ./script2.R
, starten Sie den folgenden Befehl, um den Dateibaum Ihres Pakets zu erstellen:
package.skeleton(name="MyPackage", code_files=c("script1.R","script2.R"))
Löschen Sie dann alle Dateien in ./MyPackage/man/
. Sie müssen nun die Dokumentation zusammenstellen:
roxygenize("MyPackage")
Sie sollten auch ein Referenzhandbuch aus Ihrer Dokumentation mit R CMD Rd2pdf MyPackage
über eine in ./
gestartete Eingabeaufforderung R CMD Rd2pdf MyPackage
.
Edition der Paketeigenschaften
1. Beschreibung des Pakets
./MyPackage/DESCRIPTION
Sie ./MyPackage/DESCRIPTION
Ihren Anforderungen entsprechend. Die Felder Package
, Version
, License
, Description
, Title
, Author
und Maintainer
sind Pflichtfelder, die anderen sind optional.
Wenn Ihr Paket von anderen Paketen abhängig ist, geben Sie diese in einem Feld mit dem Namen Depends
(R-Version <3.2.0) oder Imports
(R-Version> 3.2.0) an.
2. Optionale Ordner
Nachdem Sie den Skeleton-Build gestartet haben, hatte ./MyPackage/
nur noch R/
und man/
Unterordner. Es kann jedoch einige andere haben:
-
data/
: Hier können Sie die Daten platzieren, die Ihre Bibliothek benötigt und die kein Code sind. Es muss als Datensatz mit der Erweiterung.RData
werden und Sie können es zur Laufzeit mitdata()
undload()
-
tests/
: Alle Codedateien in diesem Ordner werden zur Installationszeit ausgeführt. Wenn ein Fehler auftritt, schlägt die Installation fehl. -
src/
: für C / C ++ / Fortran-Quelldateien, die Sie benötigen (mithilfe vonRcpp
...). -
exec/
: für andere ausführbare Dateien. -
misc/
: für fast alles andere.
Fertigstellung und Build
Sie können ./MyPackage/Read-and-delete-me
löschen.
Das Paket kann jetzt installiert werden.
Sie können es mit devtools::install("MyPackage")
.
Um Ihr Paket als Quell-Tarball zu erstellen, müssen Sie den folgenden Befehl über eine Eingabeaufforderung in ./
: R CMD build MyPackage
Verteilung Ihres Pakets
Durch Github
Erstellen Sie einfach ein neues Repository mit dem Namen MyPackage und laden Sie alles in MyPackage/
in den Master-Zweig MyPackage/
. Hier ist ein Beispiel .
Dann kann jeder Ihr Paket von github mit devtools installieren:
install_package("MyPackage", "your_github_usename")
Durch CRAN
Ihr Paket muss der CRAN-Repository-Richtlinie entsprechen . Einschließlich, aber nicht beschränkt auf: Ihr Paket muss plattformübergreifend sein (mit Ausnahme einiger sehr spezieller Fälle). Es sollte den R CMD check
Prüfungstest bestehen.
Hier ist das Einreichungsformular . Sie müssen das Quell-Tarball hochladen.
Vignetten erstellen
Eine Vignette ist eine ausführliche Anleitung für Ihr Paket. Die Funktionsdokumentation ist großartig, wenn Sie den Namen der gewünschten Funktion kennen, ansonsten aber nichts. Eine Vignette ist wie ein Buchkapitel oder eine wissenschaftliche Arbeit: Sie kann das Problem beschreiben, das Ihr Paket lösen soll, und dem Leser dann zeigen, wie er es lösen kann.
Vignetten werden vollständig in Markdown erstellt.
Bedarf
- Rmarkdown:
install.packages("rmarkdown")
- Pandoc
Vignetten-Erstellung
devtools::use_vignette("MyVignette", "MyPackage")
Sie können Ihre Vignette jetzt unter ./vignettes/MyVignette.Rmd
bearbeiten.
Der Text in Ihrer Vignette wird als Markdown formatiert.
Der einzige Zusatz zum ursprünglichen Markdown ist ein Tag, das R-Code übernimmt, ausführt, die Ausgabe erfasst und in formatiertes Markdown übersetzt:
```{r}
# Add two numbers together
add <- function(a, b) a + b
add(10, 20)
```
Wird angezeigt als:
# Add two numbers together
add <- function(a, b) a + b
add(10, 20)
## [1] 30
Daher müssen alle Pakete, die Sie in Ihren Vignetten verwenden, als Abhängigkeiten in ./DESCRIPTION
.