200 likes | 333 Views
Logische Vektoren in R. Jonathan Harrington. Logische Vektoren. werden für Auswahl benötigt. Die Dauer aller "E" Vokale. Die Segmente, für die F1 über 700 Hz liegt. (Formant-Werte zum Segment -Onset ). Die Etikettierungen der Segmente mit einer Dauer zwischen 100 und 200 ms.
E N D
Logische Vektoren in R Jonathan Harrington
Logische Vektoren werden für Auswahl benötigt Die Dauer aller "E" Vokale Die Segmente, für die F1 über 700 Hz liegt (Formant-Werte zum Segment-Onset) Die Etikettierungen der Segmente mit einer Dauer zwischen 100 und 200 ms. on = dcut(vowlax.fdat, 0, prop=T) Segmentliste vowlax Label-Vektor vowlax.l Trackdatei vowlax.fdat
Logische Vektoren folgen einer Boolean-Logik | bedeutet "oder" & bedeutet "und" Das Ergebnis von TRUE und TRUE ist TRUE T | T T F | F F T | F T T & T T F & F F T & F F Logischer Vektor = Ein Vektor aus TRUE und FALSE Elementen temp = c(T, F, T) temp TRUE FALSE TRUE
Klammern Material innerhalb ( ) wird zuerst bearbeitet (T & F) | T TRUE ( (T | F ) & (T & T) | F) TRUE
vec2 = c(F, F, F, F) any(vec2) FALSE any(!vec2) TRUE Logische Vektoren, sum() und any() Wieviele T? Wieviele F? sum() vec = c(T, T, F, T, F) sum(vec) 3 sum(!vec) 2 Gibt es mindestens einen T? Oder mindestens einen F? any() any(vec) TRUE any(!vec) TRUE sum(any(!vec2)) 1
Ein logischer Vektor entseht durch die Anwendung von einem Vergleichungs-Operator Erster Fall: y besteht aus einem Element x = c(10, 20, 30) y = 20 x == y FALSE TRUE FALSE x == 20 FALSE TRUE FALSE 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 FALSE FALSE TRUE
Vergleichungs-Operator labs %in% "E"(kommt "E" in labs vor?) FALSE TRUE FALSE FALSE FALSE FALSE TRUE dasselbe dasselbe (kommen "E" oder "I" in labs vor?) labs == "E" labs == "E" | labs == "I" labs %in% c("I", "E") 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 23 45 Zugriff auf Elemente durch [logische Vektoren] x = c(23, 5, 45, -10, 11) lvec = x > 20 TRUE FALSE TRUE FALSE FALSE x[!lvec] 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)"Paul" "Georg" Einige Bekannte freunde = c("Paul", "Karin", "Elke", "Georg", "Peter") Die Dauer (Min.), die sie brauchen, um in die Arbeit zu kommen zeit = c(50, 11, 35, 41, 12) Welche Dauern sind größer als 40? temp = zeit > 40 temp 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] "Georg" oder freunde[zeit == 41] "Georg"
freunde = c("Paul", "Karin", "Elke", "Georg", "Peter") zeit = c(50, 11, 35, 41, 12) 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) 30 temp = zeit == max(zeit) freunde[temp] "Paul" Oder freunde[zeit == max(zeit)] "Paul"
freunde = c("Paul", "Karin", "Elke", "Georg", "Peter") zeit = c(50, 11, 35, 41, 12) 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] "Elke" "Georg"
freunde = c("Paul", "Karin", "Elke", "Georg", "Peter") zeit = c(50, 11, 35, 41, 12) R-Befehle für: Wieviele Freunde brauchen weniger als 40 Minuten? sum() temp = zeit < 40 sum(temp) 3 Oder sum(zeit < 40)
freunde = c("Paul", "Karin", "Elke", "Georg", "Peter") zeit = c(50, 11, 35, 41, 12) Gibt es Freunde, die mehr als 45 Minuten brauchen? any() temp = zeit > 45 any(temp) TRUE oder in einer Zeile: any(zeit > 45) TRUE
temp 1 Logische Vektoren und Matrizen (Formant-Werte zum zeitlichen Mittelpunkt) Segmentliste Label-Vektor Trackdatei vowlax vowlax.l vowlax.fdat on = dcut(vowlax.fdat, 0, prop=T) Ein Vektor der F1-Werte zum Formant-Onset für "a" erzeugen Logischer Vektor um "a" zu identifizieren temp = vowlax.l == "a" Die F1-Werte zum Formant-Onset für "a" on[ , ]
temp 1:2 (Formant-Werte zum zeitlichen Mittelpunkt) Segmentliste Label-Vektor Trackdatei vowlax vowlax.l vowlax.fdat on = dcut(vowlax.fdat, 0, prop=T) F1 und F2 von "a" und "E" (zum Formant-Onset) Logischer Vektor um "a" und "E" zu identifizieren vowlax.l %in% c("a", "E") temp = Die F1- und F2-Werte zum Formant-Onset für "a" und "E" on[ , ]
(Formant-Werte zum zeitlichen Mittelpunkt) Segmentliste Label-Vektor Trackdatei vowlax vowlax.l vowlax.fdat on = dcut(vowlax.fdat, 0, prop=T) Die Vokal-Etikettierungen, für die F1 (zum Onset) höher ist als 750 Hz. Logischer Vektor um F1-Werte zu identifizieren, die höher als 750 Hz sind. on[,1] > 750 temp = Die Etikettierungen davon vowlax.l[temp] "a" "a" "a" "a" "a" "a" "a" "a" "E" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a" "a"
(Formant-Werte zum zeitlichen Mittelpunkt) Segmentliste Label-Vektor Trackdatei vowlax vowlax.l vowlax.fdat on = dcut(vowlax.fdat, 0, prop=T) Die Segmente (aus der Segmentliste) für die F2 – F1 unter 400 Hz liegt. Logischer Vektor um zu identifizieren, fuer welche Segmente (Reihen der Matrix on) F2 – F1 (zum Formant-Onset) unter 400 Hz liegt. temp = on[,2] - on[,1] < 400 Die entsprechenden Segmente aus der Segmentliste vowlax[temp,] segment list from database: kielread query was: Kanonic=a | E | I | O labels start end utts 194 I 911.563 964.625 K67MR096 209 I 1326.380 1384.500 K68MR001 ...
vowlax.l == "E" on[,1] > 700 (Formant-Werte zum zeitlichen Mittelpunkt) Segmentliste Label-Vektor Trackdatei vowlax vowlax.l vowlax.fdat on = dcut(vowlax.fdat, 0, prop=T) Der F3-Mittelwert von "E" Vokalen, in denen F1 (zum Formant-Onset) über 700 Hz liegt. Logischer Vektor um "E" Vokale & F1-Werte über 700 Hz zu identifizieren & temp = F3 Mittelwert für diese Vokale 3027 mean(on[temp,3])