Kapitel 6 Packages

Alle Probleme und Anwendungen lassen sich, jedenfalls theoretisch, mit den Basis-Funktionen von R realisieren. Je weiter in der Datenanalyse fortgeschritten wird, desto komplexer werden jedoch die Probleme. Wiederkehrende Probleme lassen sich oft lösen, indem selber Funktionen geschrieben werden. Bei vielen Programmiersprachen sind hierbei vor allem zwei Optionen der Fall:

  • (Fast) Alle Probleme waren schon mal da.
  • (Fast) Alle Probleme treten wiederholt auf.

Damit sind andere User:innen (wahrscheinlich) bereits auf das gleiche Problem gestoßen und haben entsprechende Funktionen geschrieben, um das Problem zu lösen. Sie können ihre Funktionen in sogenannten Packages der Allgemeinheit zur Verfügung stellen.

So kann mithilfe dieser Packages der Funktionsumfang von R praktisch beliebig erweitert werden.

6.1 Packages installieren und laden

Bevor auf die Funktionen des Packages zurückgegriffen werden kann, muss dieses auf dem Computer installiert werden. Analog könnte man darunter auch das Lernen von neuen Vokabeln verstehen.

Die Installation erfolgt über die Funktion install.packages(). Das einzige Argument ist der Name des zu ladenden Packages als Character.

install.packages("tidyverse")

Ist das Package installiert, muss es zunächst noch geladen werden, bevor es benutzt werden kann. Hierfür gibt es zwei Funktionen:

  • library(tidyverse)
  • require(tidyverse)

In der Praxis macht es meist keinen Unterschied, welche Funktion genutzt wird. Das einzige Argument ist bei beiden Funktionen der Name des Packages als Name (ohne Anführungszeichen).

require() wurde für die Anwendung in Funktionen entwickelt. Wird ein Package hiermit geladen, wird ein FALSE zurückgegeben, wenn das Package nicht installiert ist.

require(tidyverse)

library() gibt eine Fehlermeldung zurück, wenn das Package nicht installiert ist. Im Alltagsgebrauch wird diese Funktion empfohlen.

library(tidyverse)

Video zum Installieren und Laden von Packages:

6.2 needs()

Gerade im Arbeitsfluss ist die oben beschriebene Vorgehensweise lästig. Auf dieses Problem sind bereits vorher User:innen gestoßen und haben entsprechend ein Package geschrieben, was den Arbeitsfluss erleichtern soll. Dieses Package heißt (sehr passend) Needs und lädt nur eine Funktionen: needs().

Mit needs() können, mit Komma getrennt, ein oder mehr Packages als Namen (ohne Anführungszeichen) übergeben werden. Beim Ausführen wird zunächst überprüft, ob das Package installiert ist. Ist es installiert, wird es geladen. Ist es nicht installiert, wird es installiert und anschließend geladen.

# install.packages("needs")
library(needs)
needs(haven,
      tidyverse,
      lubridate
      )

Im Arbeitsfluss kann dann ein Package, was benötigt wird, einfach in die Funktion geschrieben und ausgeführt werden.

Hinweis!

Beim ersten Laden fragt needs, ob es sich selber laden soll, wenn es gebraucht wird. Wählt man yes aus, wird die Zeile library(needs) nicht benötigt. Diese Funktionsweise ist ein wenig “buggy”; heißt: manchmal funktioniert das nicht. Wir empfehlen, einfach das Package zu Beginn zu laden und sich nicht hierauf zu verlassen.

Video zu needs: