Vor kurzem erhielt ich eine Anfrage von Joachim Schork, ob ich mir eine Zusammenarbeit zwischen unseren Youtube-Kanälen Statistics Globe und StatistikinDD vorstellen kann. Darüber freute ich mich sehr – es wurde die erste Collab im Kontext meines Youtube-Kanals.
In meinem Beitrag auf Statistics Globe geht es um die Erstellung eigener R-Pakete.
Eigene R-Pakete erstellen: Warum und wann?
Für manchen R-Anwender mag es wie ein sehr fortgeschrittenes Thema klingen, eigene R-Pakete zu erstellen. Es ist jedoch wesentlich einfacher, als man glauben mag. Im Video geht es zunächst um die Motivation: Wann lohnt es sich? Zum Beispiel, wenn man Funktionen über mehrere Projekte hinweg verwenden möchte, oder wenn man Daten (die sich nicht häufig kurzfristig ändern) an einem zentralen Ort verwalten und leicht zugänglich machen möchte.
Mein erstes Paket in zwei Minuten
Dank RStudio ist es buchstäblich möglich, ein funktionierendes, wenn auch sehr simples Paket in zwei Minuten zu erstellen! Pakete werden in RStudio als Projekte angelegt; R Package ist dabei ein spezieller Projekt-Typ. RStudio bietet ein vorgefertigtes Beispielprojekt, das die berühmten Worte „Hello, World“ ausgibt. Hier sieht man nach wenigen Klicks die grundlegende Ordner- und Dateistruktur, mit einem Ordner für R-Skripte und einem Ordner für die Dokumentation (man für manuals). Im Video werden auch weiteren Dateien wie DESCRIPTION, .rproj und .Rbuildignore kurz angesprochen.
Zweites R-Paket: Ausführlicheres Beispiel mit Funktions-Dokumentation
Im zweiten Beispiel wird ein neues Paket von Null auf erstellt. Eine simple Funktion nimmt einen numerischen Vektor und eine Funktion als Input und wendet die Funktion auf den Vektor an:
my_calc <- function(x, f) { f(x) } my_calc(1:10, mean) # [1] 5.5
Anschließend wird die Hilfeseite, die Dokumentation für diese Funktion erstellt. Auch hierfür bietet RStudio wertvolle Unterstützung: Im Menü Code findet sich der Eintrag Insert Roxygen Skeleton, der die Grundstruktur der Hilfe in das R-Skript einfügt. Mittels sogenannter Roxygen Tags wie @param, @export, @examples werden die Bestandteile der Hilfeseite gekennzeichnet. Eine ausführlichere Beschreibung findet sich im Buch R Packages von Hadley Wickham und Jenny Bryan, das netterweise kostenlos online zugänglich ist.
R-Pakete erstellen: Umdenken gegenüber der Arbeit in R-Skripten
Beim Erstellen von R-Paketen gilt es, in einigen Punkten umzudenken gegenüber der gewohnten Arbeit mit R-Skripten außerhalb von Paketen. Ein Aspekt betrifft den Umgang mit Funktionen. Üblicherweise wird der Code ausgeführt, der die Funktion definiert, sodass sie als Objekt in der Arbeitsumgebung, dem Global Environment zur Verfügung steht. Bei R-Paketen ist das anders: Funktionen liegen in einem geschützten Bereich unabhängig vom Global Environment, dem sogenannten Package Namespace. Man sollte es vermeiden, sie als Objekte zu definieren. Sie werden nutzbar, sobald man a) das Paket installiert oder b) sie während der Entwicklung unter Build (Menü steht nur in RStudio-Projekten zur Verfügung, die als Pakete angelegt wurden) – More – Load All bzw. mit Strg + Shift + L lädt.
Fazit und Ausblick
- Ein eigenes Paket zu erstellen ist einfacher, als man glauben möchte
- Es ist wesentlich angenehmer, die Hilfe zu einer Funktion aufzurufen, wie man es von anderen Paketen gewohnt ist, als R-Skripte nach Kommentaren zu durchsuchen, um eine Funktion zu verstehen
- Es gibt inzwischen viele Hilfsmittel, die die Paket-Entwicklung unterstützen und wesentlich erleichtern, z. B. die R-Pakete devtools und usethis.
- devtools enthält Funktionen wie load_all(), install_github(), install_version() usw. (eingebunden aus dem remotes-Paket)
- usethis enthält Funktionen wie use_r (R-Skript anlegen), use_git (Versionskontrolle aktivieren), use_github (lokales Projekt mit github verbinden), use_vignette (Vignette anlegen), use_data (Datensatz ins Paket einbinden)
Mehr erfahren:
- Buch R Packages von Hadley Wickham und Jenny Bryan (aktuelle Auflage nehmen – seit der ersten hat sich viel getan!)
- Blogartikel hier:
Eigene R-Pakete erstellen – Warum und wann?
Ein eigenes R-Paket in zwei Minuten erstellen mit RStudio
Hilfe erstellen für Funktionen in eigenen R-Paketen (roxygen2) - Youtube-Playlist – englisch, ausführlich
- Youtube-Playlist – deutsch, kürzer
Danke an Joachim für die reibungslose Zusammenarbeit!
The post Eigene R-Pakete erstellen: Gast-Video auf Statistics Globe first appeared on Statistik Dresden.