EMZETT.
Login

Kurz: Ein Vektor ist eine geordnete Folge von Werten desselben Typs. Erzeugt wird er mit c() (combine):

Teil des Kurses R

Kapitel 2 von 9 im Kurs R (Abschnitt „Datenstrukturen“). Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

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 Text

Ausgabe:

[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]]
NULL

Vektorisierung

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.331

Benannte 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] 0

NA 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.max

Ausgabe:

[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] 2147483647

Merke

  • 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
  • NA fü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

Weiter im Kurs

Zurück: Einführung und erstes Skript

Weiter: Faktoren, Matrizen und Listen

Alle Kapitel: R im Überblick