Kurz: Ein Vektor ist eine geordnete Folge von Werten desselben Typs. Erzeugt wird er mit c() (combine):
Teil des Kurses R
Der Vektor
Ein Vektor ist eine geordnete Folge von Werten desselben Typs. Erzeugt wird er mit c() (combine):
zahlen <- c(4, 8, 15, 16, 23, 42)
namen <- c("Mia", "Tom", "Zoe")
logisch <- c(TRUE, FALSE, TRUE)
zahlen
length(zahlen)
zahlen[1] # Indizes beginnen bei 1!
zahlen[c(1, 3)]
zahlen[2:4]
zahlen[-1] # alles außer dem ersten
zahlen[zahlen > 10] # Filter mit Bedingung
rev(zahlen)
c(1, "a", TRUE) # gemischt: alles wird zu TextAusgabe:
[1] 4 8 15 16 23 42
[1] 6
[1] 4
[1] 4 15
[1] 8 15 16
[1] 8 15 16 23 42
[1] 15 16 23 42
[1] 42 23 16 15 8 4
[1] "1" "a" "TRUE"Folgen und Wiederholungen
1:10
seq(0, 1, by = 0.25)
seq(10, 100, length.out = 4)
seq_len(5); seq_along(c("a", "b"))
rep(c(1, 2), times = 3)
rep(c("a", "b"), each = 2)
numeric(3); character(2); logical(2)
vector("list", 2)Ausgabe:
[1] 1 2 3 4 5 6 7 8 9 10
[1] 0.00 0.25 0.50 0.75 1.00
[1] 10 40 70 100
[1] 1 2 3 4 5
[1] 1 2
[1] 1 2 1 2 1 2
[1] "a" "a" "b" "b"
[1] 0 0 0
[1] "" ""
[1] FALSE FALSE
[[1]]
NULL
[[2]]
NULLVektorisierung
Rechenoperationen wirken auf jedes Element. Ist ein Vektor kürzer, wird er wiederholt (Recycling):
a <- c(1, 2, 3)
b <- c(10, 20, 30)
a + b
a * 2
a * b
a ^ 2
sqrt(a)
a + c(100, 200) # Recycling mit Warnung (Länge 3 vs 2)
sum(a); mean(b); prod(a); cumsum(a); diff(c(1, 4, 9))
max(b); min(b); range(b); which.max(b); which(b > 15)
a > 1
any(a > 2); all(a > 0)
ifelse(a > 1, "groß", "klein")Ausgabe:
[1] 11 22 33
[1] 2 4 6
[1] 10 40 90
[1] 1 4 9
[1] 1.000000 1.414214 1.732051
[1] 101 202 103
[1] 6
[1] 20
[1] 6
[1] 1 3 6
[1] 3 5
[1] 30
[1] 10
[1] 10 30
[1] 3
[1] 2 3
[1] FALSE TRUE TRUE
[1] TRUE
[1] TRUE
[1] "klein" "gro\303\237" "gro\303\237"Statistik für Vektoren
x <- c(2, 4, 4, 4, 5, 5, 7, 9)
mean(x); median(x); var(x); sd(x)
quantile(x)
quantile(x, 0.9)
summary(x)
table(x)
sort(x, decreasing = TRUE)
order(c(3, 1, 2))
rank(c(10, 30, 20))
unique(x); duplicated(x); rev(sort(unique(x)))
cor(c(1, 2, 3, 4), c(2, 4, 5, 9))
scale(c(1, 2, 3))[, 1]
round(cumprod(c(1.1, 1.1, 1.1)), 3)Ausgabe:
[1] 5
[1] 4.5
[1] 4.571429
[1] 2.13809
0% 25% 50% 75% 100%
2.0 4.0 4.5 5.5 9.0
90%
7.6
Min. 1st Qu. Median Mean 3rd Qu. Max.
2.0 4.0 4.5 5.0 5.5 9.0
x
2 4 5 7 9
1 3 2 1 1
[1] 9 7 5 5 4 4 4 2
[1] 2 3 1
[1] 1 3 2
[1] 2 4 5 7 9
[1] FALSE FALSE TRUE TRUE FALSE TRUE FALSE FALSE
[1] 9 7 5 4 2
[1] 0.9647638
[1] -1 0 1
[1] 1.100 1.210 1.331Benannte Vektoren und fehlende Werte
alter <- c(Mia = 17, Tom = 25, Zoe = 31)
alter["Tom"]
names(alter)
alter[alter > 20]
alter["Ben"] <- 9
alter
messung <- c(5, NA, 7, NA, 9)
mean(messung) # NA steckt an
mean(messung, na.rm = TRUE)
is.na(messung)
sum(is.na(messung))
messung[!is.na(messung)]
NULL
length(NULL)Ausgabe:
Tom
25
[1] "Mia" "Tom" "Zoe"
Tom Zoe
25 31
Mia Tom Zoe Ben
17 25 31 9
[1] NA
[1] 7
[1] FALSE TRUE FALSE TRUE FALSE
[1] 2
[1] 5 7 9
NULL
[1] 0NA steht für einen fehlenden Wert (not available), NaN für “keine Zahl” (0/0), Inf für unendlich, NULL für “nichts”.
Typen und Umwandlung
class(c(1L, 2L)); class(c(1.5, 2)); class("a"); class(TRUE); class(NULL); class(NA)
as.integer("42") + 1L
as.numeric(c("1.5", "abc"))
as.character(123)
as.logical(c("TRUE", "false", "T", "ja"))
is.vector(1:3); typeof(1:3); typeof(c(1, 2)); object.size(1:10) > 0
0.1 + 0.2 == 0.3
isTRUE(all.equal(0.1 + 0.2, 0.3))
5L / 2L; 5L %/% 2L; .Machine$integer.maxAusgabe:
[1] "integer"
[1] "numeric"
[1] "character"
[1] "logical"
[1] "NULL"
[1] "logical"
[1] 43
[1] 1.5 NA
[1] "123"
[1] TRUE FALSE TRUE NA
[1] TRUE
[1] "integer"
[1] "double"
[1] TRUE
[1] FALSE
[1] TRUE
[1] 2.5
[1] 2
[1] 2147483647Merke
- Vektoren per
c(),1:10,seq(),rep(); Indizes ab 1 - Indexieren mit Zahlen, negativen Zahlen, Namen und logischen Vektoren
- Rechnen wirkt elementweise (Vektorisierung), kurze Vektoren werden recycelt
- Kennzahlen:
mean,median,sd,quantile,summary,table NAfür fehlende Werte:na.rm = TRUE,is.na()
Übungsaufgabe
Erzeuge die Zahlen 1 bis 20, wähle alle durch 3 teilbaren aus und berechne ihre Summe.
Quiz zur Selbstkontrolle
Bei welchem Index beginnt ein R-Vektor?
- 1 (richtig)
- 0
- -1
- 2
Was macht mean(x, na.rm = TRUE)?
- Berechnet den Mittelwert ohne die fehlenden Werte (richtig)
- Löscht x
- Gibt NA zurück
- Rundet x
Was passiert bei c(1, "a", TRUE)?
- Alle Elemente werden zu Text (richtig)
- Ein Fehler
- Alle werden Zahlen
- Eine Liste entsteht
Weiter im Kurs
Zurück: Einführung und erstes Skript
Weiter: Faktoren, Matrizen und Listen
Alle Kapitel: R im Überblick