-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path06-Packages.Rmd
100 lines (72 loc) · 3.56 KB
/
06-Packages.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# 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.
## 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.
```{r eval = FALSE, warning=FALSE, message=FALSE}
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.
```{r eval=FALSE}
require(tidyverse)
```
`library()` gibt eine Fehlermeldung zurück, wenn das Package nicht installiert
ist. Im Alltagsgebrauch wird diese Funktion empfohlen.
```{r eval=FALSE}
library(tidyverse)
```
*Video zum Installieren und Laden von Packages:*
```{r, echo=FALSE}
knitr::include_url("https://videocampus.urz.uni-leipzig.de/paella/ui/watch.html?id=6ccedf02-f692-4d65-8889-a50394da4c38")
```
## 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.
```{r eval=FALSE}
# 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:*
```{r, echo=FALSE}
knitr::include_url("https://videocampus.urz.uni-leipzig.de/paella/ui/watch.html?id=e6740984-4865-4f4e-8d4d-eaf62fcc9823")
```