Funktionen
Custom Funktionen
Funktionen sind sehr oft gebrauchte Entitäten in , mithilfe derer man sich hauptsächlich sparen kann sich wiederholenden Code zu schreiben. Als praktische:r Anwender:in schreibt in der Regel Funktionen eher selten selbst, nutzt aber sehr häufig Funktionen anderer. Um damit besser klar zu kommen, lohnt es sich anfangs einige wenige Funktionen selbst zu schreiben.
Die klassische Struktur einer Funktion in sieht wie folgt aus:
- 1
- Zuweisung des Objektnamens
- 2
-
Befehl für »Erstellung einer Funktion« (
function()) und Festlegung deren Argumente - 3
- Festlegung des Outputs der Funktion
Übung 1
Erstellen Sie eine Funktion durchschnittsbilder() die das arithmetische Mittel von vier numerischen atomic vectors (»Zahlen«) berechnet.
Das schaffst du auch ohne Hinweis 💪🏽!
durchschnittsbilder <-
function(hund,katze,maus,zahlvier) {
return((hund + katze + maus + zahlvier)/4)
}
Während die durchschnittsbilder-Funktion keinen Output ergibt, wenn man nicht alle Argumente spezifiziert, haben die meisten Funktionen, die wir später nutzen werden defaults für viele Argumente.
Übung 2
Die folgende Funktion hat den default summe für das Argument methode. Denken Sie über den Code nach und diskutieren Sie welchen Output die Inputs in den Zeilen 9-11 zeigen werden.
Vektorisierte Funktionen
Viele vordefinierte Funktionen sind vektorisiert. Das bedeutet, dass sie ihre Funktion mehrfach ausführen, wenn sie keine atomare Struktur sondern einen Vektor übergeben bekommen. Diese Vektorisierung kann elementweise erfolgen,
c(5, 2, 8) > 3[1] TRUE FALSE TRUE
c(5, 2, 8) > c(4, 3, 9)[1] TRUE FALSE FALSE
oder über alle paarweisen Kombinationen hinweg:
outer(c(5, 2, 8), c(4, 3, 9), `>`) [,1] [,2] [,3]
[1,] TRUE TRUE FALSE
[2,] FALSE FALSE FALSE
[3,] TRUE TRUE FALSE
Modularität via Bibliotheken
gilt als eine der »schnellsten« Statistiksoftwarelösungen - und zwar im doppelten Sinne: Zum einen dauern auch komplexe Modellierungen nur kurze Zeit, zum anderen werden neu entwickelte statistische Verfahren sehr schnell implementiert. Dies geschieht anhand von »Softwareteilstücken« den sogenannten Bibliotheken (»packages«). Entwickelt ein:e Forscher:in ein neues statistisches Verfahren oder programmiert ein fortgeschrittener User benutzerfreudlichere Operatoren/Funktionen, können diese anhand der Bibliotheken bereitgestellt werden.
Bibliotheken installieren
Zentrale Repositorien halten derzeit über 15.000 Bibliotheken bereit, weshalb es nicht empfehlenswert ist alle zu installieren. Nutz man lokal auf einem Rechner und nicht wie hier im Browser installiert man einzelne Bibliotheken mit der Syntax install.packages("packagename"). Dieser Befehl sorgt dafür, dass die Bibliothek von einem Repositorium via Internet auf den Rechner geladen wird.
Bibliotheken laden
Die Operatoren/Funktionen der Bibliothek stehen allerdings erst für eine Anwendung zur Verfügung, wenn eine Bibliothek »geladen« wird. Dies erfolgt (lokal und hier im Browser) mithilfe der Syntax library(packagename).
Funktionen aus ungeladenen Bibliotheken nutzen
Möchte man nur eine bestimmte Funktion aus einem bestimmten Paket nutzen, verwendet man die Syntax paketname::funktionsname().