<- 5 my_var
7 Vektoren
Bisher haben wir mit einzelnen Werten gearbeitet. Beispielsweise haben wir in der Variable my_var
nur den einzelnen Wert \(5\) gespeichert:
Sehr häufig wollen wir jedoch mit vielen Werten gleichzeitig arbeiten. Angenommen wir haben bei einem Patienten den Y-BOCS durchgeführt. Der Y-BOCS ist ein Verfahren zur Erhebung von Zwangs-Symptomen mit 10 Fragen. Für jede Frage bekommen die Patient:innen einen Wert zwischen 0 und 4 zugeordnet. Wenn die Summe über alle 10 Fragen über 16 liegt, spricht man von klinisch signifikanten Zwangssymptomen (Farris et al., 2013). Wir könnten die 10 Werte des Patienten folgendermaßen erfasst:
<- 3
ybocs_frage_1 <- 4
ybocs_frage_2 <- 2
ybocs_frage_3 <- 0
ybocs_frage_4 <- 2
ybocs_frage_5 <- 0
ybocs_frage_6 <- 3
ybocs_frage_7 <- 2
ybocs_frage_8 <- 1
ybocs_frage_9 <- 1 ybocs_frage_10
Berechne die Summe der 10 Y-BOCS Fragen.
Lösung anzeigen
<- ybocs_frage_1 + ybocs_frage_2 + ybocs_frage_3 + ybocs_frage_4 +
ybocs_summe + ybocs_frage_6 + ybocs_frage_7 + ybocs_frage_8 +
ybocs_frage_5 + ybocs_frage_10
ybocs_frage_9 ybocs_summe
[1] 18
Jeden Wert in einer eigenen Variable zu speichern ist furchtbar aufwendig. Vektoren nehmen uns hier sehr viel Arbeit ab. Diese sind im Prinzip einfach nur eine Aneinanderreihung von Werten. In R erstellen wir diese Aneinanderreihungen mit c()
für “combine”. Die einzelnen Werte werden mit Kommata getrennt:
<- c(1,2,6,4) my_vector
Falls Du Vektoren noch aus dem Mathe-Unterricht kennst: Wir können uns my_vec
folgendermaßen vorstellen: my_vec = [1 2 6 4]
.
Erstelle einen Vektor mit dem Namen ybocs
und speichere die oben genannten 10 Y-BOCS Werte des Patienten in diesem Vektor.
Lösung anzeigen
<- c(3, 4, 2, 0, 2, 0, 3, 2, 1, 1) ybocs
Du kannst Dir den Inhalt des Vektors auch anzeigen lassen, indem Du print(ybocs)
ausführst.
print(ybocs)
[1] 3 4 2 0 2 0 3 2 1 1
Auf Vektoren können wir nun Funktionen anwenden. Was Funktionen sind, werden wir später lernen. Hier kommt schon mal ein Vorgeschmack: Wenn wir die Summe der Y-BOCS Werte berechnen wollen, geht dies ganz einfach mit
sum(ybocs)
[1] 18
7.1 Elemete aus einem Vektor herausgreifen
Wenn wir nun wissen wollen, welchen Wert der Patient auf der ersten Frage hat, können wir eckige Klammern nutzen:
1] # Der Wert in der Klammer ist die Frage, für die wir den Wert wissen wollen ybocs[
[1] 3
Greife nun den Wert der 7. Frage heraus.
Lösung anzeigen
7] ybocs[
[1] 3
Was passiert, wenn Du versuchst auf den 75. Wert zuzugreifen?
Lösung anzeigen
75] ybocs[
[1] NA
NA
(“Not Available”). R sagt uns also, dass der Wert nicht existiert!
Wir können auch auf mehrere Werte auf einmal zugreifen. Hierfür müssen wir einen Vektor an Werten in die eckigen Klammern schreiben:
c(1,4,5)] # wir holen uns hier die Werte ybocs[
[1] 3 0 2
# der ersten, vierten und fünften Frage
Beachte das c()
um die Werte!
7.2 Vektoren ändern
Wir können mit den eckigen Klammern nicht nur einzelne Werte anschauen sondern diese auch ändern:
3] <- 1234
ybocs[print(ybocs)
[1] 3 4 1234 0 2 0 3 2 1 1
Ändere den fünften Wert zu NA
!
Lösung anzeigen
5] <- NA
ybocs[print(ybocs)
[1] 3 4 1234 0 NA 0 3 2 1 1
7.3 Verschiedene Datentypen
Wir können in Vektoren immer nur Daten eines Typs speichern. Oben haben wir beispielsweise nur Zahlen im Vektor ybocs
gespeichert. Wir können auch Text in einem Vektor speichern:
<- c("abc", "def", "ghi") text_vector
Lösung anzeigen
<- c(123, "def", "ghi")
mix_vector print(mix_vector)
[1] "123" "def" "ghi"
123
wurde automatisch in einen Text übersetzt! Das sehen wir daran, dass um die Zahl nun Anführungszeichen stehen ("123"
).
Die einzige Ausnahme sind NA
. Fehlende Werte können wir mit allen anderen Datentypen mischen.
Wenn wir verschiedene Datentypen kombinieren wollen, brauchen wir data.frames und Listen. Die schauen wir uns in späteren Kapiteln genauer an.