270 likes | 381 Views
Grundlagen der R Programmiersprache. Modul G WS 07/08. Besteht aus einem oder mehrerern Elementen. x = 3 meinedatei = c(10, 20, -4) foo = c("IPDS", "Phonetik", “Leibnizstr. 10", 2007, "WS"). Besteht aus TRUE und FALSE. Objekte. Vektor. Matrix. Eine Zusammensetzung aus Vektoren
E N D
Grundlagen der R Programmiersprache Modul G WS 07/08
Besteht aus einem oder mehrerern Elementen x = 3 meinedatei = c(10, 20, -4) foo = c("IPDS", "Phonetik", “Leibnizstr. 10", 2007, "WS") Besteht aus TRUE und FALSE Objekte Vektor Matrix Eine Zusammensetzung aus Vektoren rbind() und cbind() Logischer Vektor Skalar Eine skalare Variable speichert eine einzelne Zahl (Skalar).
foo[2] foo[2:4] Elemente 2 und 5 a = c(2, 5) foo[a] oder foo[c(2, 5)] Vektoren: Zugriff auf Elemente foo = c("IPDS", "Phonetik", "Leibnizstr. 10", 2007, "WS") foo[-3] Alle Elemente außer “Leibnizstr. 10"
Die length() Funktion wieviele Elemente in einem Vektor? length(x) [1] 3 length(y) [1] 3 length(x)==length(y) [1] TRUE Arithmetische Funktionen werden immer parallelauf Vektoren angewendet x = c(10, 20, 30) y = c(-5, 0, 10) x * y [1] -50 0 300
cbind():Spaltenverbindung mat2 = cbind(x, y) mat2 x y [1,] 10 -5 [2,] 20 0 [3,] 30 10 Reihenanzahl nrow(mat) [1] 2 Spaltenanzahl ncol(mat) [1] 3 Dimensionenanzahl dim(mat) [1] 2 3 Matrizen rbind():Reihenverbindung x = c(10, 20, 30) y = c(-5, 0, 10) mat = rbind(x, y) mat [,1] [,2] [,3] x 10 20 30 y -5 0 10
Matrizen und Dimensionennamen mat2 x y [1,] 10 -5 [2,] 20 0 [3,] 30 10 Dimensionen-Namen geben:dimnames() xnamen = c("Gruppe A", "Gruppe B", "Gruppe C") ynamen = c("Erg. 1", "Erg. 2") dimnames(mat2) = list(xnamen, ynamen) mat2 Erg. 1 Erg. 2 Gruppe A 10 -5 Gruppe B 20 0 Gruppe C 30 10
Dimensionen-Namen entfernen... dimnames(mat2) = NULL mat2 [,1] [,2] [1,] 10 -5 [2,] 20 0 [3,] 30 10
Matrizen und Arithmetische Vorgänge werden wie bei Vektoren parallel durchgeführt mat [,1] [,2] [,3] x 10 20 30 y -5 0 10 mat -20 [,1] [,2] [,3] x -10 0 10 y -25 -20 -10
a [,1] [,2] [,3] [,4] 10 3 8 7 11 45 20 -1 b [,1] [,2] [,3] [,4] 20 6 16 14 22 90 40 -2 a + b [,1] [,2] [,3] [,4] 30 9 24 21 33 135 60 -3
Anwendung von Funktionen auf Matrizen mat [,1] [,2] [,3] x 10 20 30 y -5 0 10 mean(mat) [1] 10.83333 (Durchschnitt aller Elemente) Zentralwert der Spalten apply(mat, 2, median) [1] 2.5 10.0 20.0 Durchschnitt der Reihen apply(mat, 1, mean) x y 20.000000 1.666667
Zugriff auf Elemente einer Matrix mat [,1] [,2] [,3] x 10 20 30 y -5 0 10 mat[2,3]bedeutet: Reihe 2, Spalte 3 [1] 10 Nur Reihe 2 mat[2,] [1] -5 0 10 Nur Spalte 3 mat[,3] x y 30 10 Reihen: Vor dem Komma Spalten: Nach dem Komma Vektoren: Eine einzige Zahl OHNE KOMMA
Zugriff auf Elemente einer Matrix bridge ist eine Matrix Reihen 2 bis 8 bridge[2:8,] Spalten 1 und 3 bridge[,c(1,3)] bridge[2:8,c(1,3)] Reihen 2 bis 8 von Spalten 1 und 3 Spalte 1 von Reihen 2 und 4 bridge[c(2,4),1] Reihen 1-3 aller Spalten außer Spalte 2 bridge[1:3,-2]
Logische Vektoren folgen einer Boolean-Logik | bedeutet "oder" & bedeutet "und" Das Ergebnis von TRUE und TRUE ist TRUE T | T [1] T F | F [1] F T | F [1] T T & T [1] T F & F [1] F T & F [1] F Logischer Vektor = Ein Vektor aus TRUE und FALSE Elementen temp = c(T, F, T) temp [1] TRUE FALSE TRUE
Klammern Material innerhalb ( ) wird zuerst bearbeitet (T & F) | T [1] TRUE ( (T | F ) & (T & T) | F) [1] TRUE
vec2 = c(F, F, F, F) any(vec2) [1] FALSE any(!vec2) [1] TRUE Logische Vektoren, sum() und any() Wieviele T? Wieviele F? sum() vec = c(T, T, F, T, F) sum(vec) [1] 3 sum(!vec) [1] 2 Gibt es mindestens einen T? Oder mindestens einen F? any() any(vec) [1] TRUE any(!vec) [1] TRUE sum(any(!vec2)) [1] 1
Erster Fall: y besteht aus einem Element x = c(10, 20, 30) y = 20 x == y [1] FALSE TRUE FALSE x == 20 [1] FALSE TRUE FALSE Vergleichungs-Operator x == ygleicht x y? != gleicht nicht x < y ist x weniger als y? > größer als <= weniger oder gleicht x %in% y ist y in x enthalten?
Vergleichungs-Operator Zweiter Fall. x und y sind zueinander parallel (und bestehen daher aus der selben Anzahl von Elementen) x = c(10, 20, 30) y = c(9, 50, 30) x == y [1] FALSE FALSE TRUE
Vergleichungs-Operator labs %in% "E"(kommt "E" in labs vor?) [1] FALSE TRUE FALSE FALSE FALSE FALSE TRUE (kommen "E" oder "I" in labs vor?) labs %in% c("I", "E") [1] TRUE TRUE FALSE FALSE FALSE TRUE TRUE Dasselbe: y = c("I", "E") labs %in% y [1] TRUE TRUE FALSE FALSE FALSE TRUE TRUE %in% labs = c("I", "E", "O", "O", "O","I", "E")
> x[lvec]bedeutet: die Elemente in x, für die lvec TRUE ist [1] 23 45 Zugriff auf Elemente durch [logische Vektoren] x = c(23, 5, 45, -10, 11) lvec = x > 20 [1] TRUE FALSE TRUE FALSE FALSE x[!lvec] [1] 5 -10 11
Was ist (a) die Bedeutung (in Wörtern) und (b) das Ergebnis von: freunde[temp] (a) Bedeutung: die Freunde, die länger als 40 Minuten brauchen, um in die Arbeit zu kommen. (b)[1] "Paul" "Georg" Meine Freunde freunde = c("Paul", "Karin", "Elke", "Georg", "Peter") Die Dauer (Min.) um in die Arbeit zu kommen zeit = c(50, 11, 35, 41, 12) Welche Dauern sind größer als 40? temp = zeit > 40 temp [1] TRUE FALSE FALSE TRUE FALSE
freunde = c("Paul", "Karin", "Elke", "Georg", "Peter") zeit = c(50, 11, 35, 41, 12) Schreiben Sie R-Befehle für: Welche Freunde brauchen 41 Minuten, um in die Arbeit zu kommen? temp = zeit == 41 freunde[temp] [1] "Georg" oder freunde[zeit == 41] [1] "Georg"
Schreiben Sie R-Befehle für: Welcher Freund braucht am längsten? Hier muss auch die max()Funktion verwendet werden: y = c(10, 20, 30) max(y) [1] 30 temp = zeit == max(zeit) freunde[temp] [1] "Paul" Oder freunde[zeit == max(zeit)] [1] "Paul"
R-Befehle für: welcher Freund braucht zwischen 25 und 45 Minuten? ·(die Freunde, die mehr als 25 Minuten brauchen) & ·(die Freunde, die weniger als 45 Minuten brauchen) temp = (zeit > 25) & (zeit < 45) freunde[temp] [1] "Elke" "Georg"
R-Befehle für: Wieviele Freunde brauchen weniger als 40 Minuten? sum() temp = zeit < 40 sum(temp) [1] 3 Oder sum(zeit < 40)
Gibt es Freunde, die mehr als 45 Minuten brauchen? any() temp = zeit > 45 any(temp) [1] TRUE oder in einer Zeile: any(zeit > 45) [1] TRUE