Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Grundlagen der R Programmiersprache Jonathan Harrington.

Ähnliche Präsentationen


Präsentation zum Thema: "Grundlagen der R Programmiersprache Jonathan Harrington."—  Präsentation transkript:

1 Grundlagen der R Programmiersprache Jonathan Harrington

2 Objekte Vektor Besteht aus einem oder mehrerern Elementen x = 3 meinedatei = c(10, 20, -4) foo = c("IPSK", "Phonetik", "Schellingstr 3", 2006, "WS") Matrix Logischer Vektor Besteht aus TRUE und FALSE Eine Zusammensetzung aus Vektoren rbind() und cbind()

3 Vektoren: Zugriff auf Elemente foo = c("IPSK", "Phonetik", "Schellingstr 3", 2006, "WS") foo[2] foo[2:4] foo[-3] Alle Elemente außer "Schellingstr 3" Elemente 2 und 5 foo[c(2, 5)] oder a = c(2, 5) foo[a]

4 Arithmetische Funktionen werden immer parallel auf Vektoren angewendet x = c(10, 20, 30) y = c(-5, 0, 10) x * y [1] Die length() Funktion wieviele Elemente in einem Vektor? length(x) [1] 3 length(y) [1] 3 length(x)==length(y) [1] TRUE

5 Matrizen x = c(10, 20, 30) y = c(-5, 0, 10) mat = rbind(x, y) mat [,1] [,2] [,3] x y rbind(): Reihenverbindung cbind(): Spaltenverbindung mat2 = cbind(x, y) mat2 x y [1,] [2,] 20 0 [3,] Reihenanzahl nrow(mat) [1] 2 Spaltenanzahl ncol(mat) [1] 3 Dimensionenanzahl dim(mat) [1] 2 3

6 Matrizen und Dimensionennamen mat2 x y [1,] [2,] 20 0 [3,] 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 Gruppe B 20 0 Gruppe C Dimensionen-Namen geben: dimnames()

7 dimnames(mat2) = NULL mat2 [,1] [,2] [1,] [2,] 20 0 [3,] Dimensionen-Namen entfernen...

8 Matrizen und Arithmetische Vorgänge werden wie bei Vektoren parallel durchgeführt mat [,1] [,2] [,3] x y mat -20 [,1] [,2] [,3] x y

9 a [,1] [,2] [,3] [,4] b [,1] [,2] [,3] [,4] a + b [,1] [,2] [,3] [,4]

10 Anwendung von Funktionen auf Matrizen mat [,1] [,2] [,3] x y mean(mat) [1] (Durchschnitt aller Elemente) Durchschnitt der Reihen apply(mat, 1, mean) x y Zentralwert der Spalten apply(mat, 2, median) [1]

11 Zugriff auf Elemente einer Matrix mat [,1] [,2] [,3] x y mat[2,3] bedeutet: Reihe 2, Spalte 3 [1] 10 Nur Reihe 2 mat[2,] [1] Nur Spalte 3 mat[,3] x y Reihen: Vor dem Komma Spalten: Nach dem Komma Vektoren: Eine einzige Zahl OHNE KOMMA

12 Zugriff auf Elemente einer Matrix Reihen 2 bis 8 Spalten 1 und 3 Reihen 2 bis 8 von Spalten 1 und 3 Spalte 1 von Reihen 2 und 4 Reihen 1-3 aller Spalten außer Spalte 2 bridge[2:8,] bridge[,c(1,3)] bridge[2:8,c(1,3)] bridge[c(2,4),1] bridge[1:3,-2] bridge ist eine Matrix

13 Logische Vektoren 410 Vokal-Labels vowlax.l length(vowlax.l) [1] 410 table(vowlax.l) vowlax.l a E I O vowlax.fdat.5[1:3,] eine 410 x 4 Matrix der F1-F4 Werte dieser Vokale zum zeitlichen Mittelpunkt F1-F4 der ersten 3 Vokale T1 T2 T3 T Dimension-namen (die Zeiten, zu denen diese Werte vorkommen) die Werte dieser Vokale: vowlax.l[1:3]

14 Wir wollen den durchschnittlichen F2 aller "a Vokale berechnen. Dafür werden logische Vektoren benötigt…

15 Logischer Vektor temp = c(T, F, T) temp [1] TRUE FALSE TRUE = Ein Vektor aus TRUE und FALSE Elementen | bedeutet "oder" T | T [1] T F | F [1] F T | F [1] T & bedeutet "und" T & T [1] T F & F [1] F T & F [1] F Das Ergebnis von TRUE und TRUE ist TRUE Logische Vektoren folgen einer Boolean-Logik

16 (T & F) | T [1] TRUE ( (T | F ) & (T & T) | F) [1] TRUE Klammern Material innerhalb ( ) wird zuerst bearbeitet

17 Wieviele T? Wieviele F? sum() any(vec) [1] TRUE any(!vec) [1] TRUE Logische Vektoren, sum() und any() vec2 = c(F, F, F, F) any(vec2) [1] FALSE any(!vec2) [1] TRUE Gibt es mindestens einen T? Oder mindestens einen F? sum(any(!vec2)) [1] 1 vec = c(T, T, F, T, F) sum(vec) [1] 3 sum(!vec) [1] 2 any()

18 Vergleichungs-Operator x == y gleicht x y? != gleicht nicht x größer als <= weniger oder gleicht x %in% y ist y in x enthalten? x = c(10, 20, 30) y = 20 x == y [1] FALSE TRUE FALSE x == 20 [1] FALSE TRUE FALSE Erster Fall: y besteht aus einem Element

19 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

20 Vergleichungs-Operator %in% labs = c("I", "E", "O", "O", "O","I", "E") labs %in% "E" (kommt "E" in labs vor?) [1] FALSE TRUE FALSE FALSE FALSE FALSE TRUE labs %in% c("I", "E") (kommen "E" oder "I" in labs vor?) [1] TRUE TRUE FALSE FALSE FALSE TRUE TRUE y = c("I", "E") Dasselbe: labs %in% y [1] TRUE TRUE FALSE FALSE FALSE TRUE TRUE

21 x = c(23, 5, 45, -10, 11) lvec = x > 20 [1] TRUE FALSE TRUE FALSE FALSE Zugriff auf Elemente durch [logische Vektoren] > x[lvec] bedeutet: die Elemente in x, für die lvec TRUE ist [1] x[!lvec] [1]

22 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) temp = zeit > 40 [1] TRUE FALSE FALSE TRUE FALSE te mp freunde[temp] Was ist (a) die Bedeutung (in Wörtern) und (b) das Ergebnis von: (a) Bedeutung: die Freunde, die länger als 40 Minuten brauchen, um in die Arbeit zu kommen. (b) [1] "Paul" "Georg" Welche Dauern sind größer als 40?

23 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"

24 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"

25 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"

26 R-Befehle für: Wieviele Freunde brauchen weniger als 40 Minuten? sum() temp = zeit < 40 sum(temp) [1] 3 Oder sum(zeit < 40)

27 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

28 Die Elemente von Reihe 1, die größer als 30 sind (logischer Vektor verwenden) temp = bridge[,1] > 30 bridge[temp,1] Alle Reihen von bridge, für die die Werte in Reihe 1 größer als 30 sind Mon Tues Wed bridge[temp,] dim(bridge) [1] 13 3 Mon Tues Wed bridge

29 Logische Vektoren vowlax.l Ein Vektor von 410 Vokal- Etikettierungen vowlax.fdat.5 table(vowlax.l) Eine Matrix der F1-F4 Werte zum zeitlichen Mittelpunkt x = c(10, 15, 18) mean(x) dim(vowlax.fdat.5) [1] F2- Durchschnitt aller "a" Vokale? temp = vowlax.l == "a" mean(vowlax.fdat.5[temp,2]) [1]

30 Seite 31 von Aufgaben 1 (Vektoren) und 2 (Matrizen) von: A sketch of the R Programming language and environment (in Harrington, J. forthcoming, The Phonetic Analysis of Speech Corpora. Blackwell): doc, pdf. muenchen.de/~jmh/lehre/emur.htm


Herunterladen ppt "Grundlagen der R Programmiersprache Jonathan Harrington."

Ähnliche Präsentationen


Google-Anzeigen