• Keine Ergebnisse gefunden

Logische Vektoren in R

N/A
N/A
Protected

Academic year: 2021

Aktie "Logische Vektoren in R"

Copied!
20
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Logische Vektoren in R

Jonathan Harrington

(2)

Trackdatei Label-Vektor

vowlax.fdat vowlax

(Formant-Werte zum Segment-Onset)

on =

dcut(vowlax.fdat, 0, prop=T)

Segmentliste

vowlax.l

Logische Vektoren

werden für Auswahl benötigt Die Dauer aller "E" Vokale

Die Segmente, für die F1 über 700 Hz liegt

Die Etikettierungen der Segmente

mit einer Dauer zwischen 100 und

200 ms.

(3)

Logischer Vektor

temp = c(T, F, T) temp

TRUE FALSE TRUE

= Ein Vektor aus TRUE und FALSE Elementen

| bedeutet "oder"

T | T T

F | F F

T | F T

& bedeutet "und"

T & T T

F & F F

T & F F

Das Ergebnis von TRUE und

TRUE ist TRUE

Logische Vektoren folgen einer Boolean-Logik

(4)

(T & F) | T TRUE

( (T | F ) & (T & T) | F) TRUE

Klammern

Material innerhalb ( ) wird zuerst bearbeitet

(5)

Wieviele T? Wieviele F?

sum()

any(vec) TRUE

any(!vec) TRUE

Logische Vektoren, sum() und any()

vec2 = c(F, F, F, F) any(vec2)

FALSE

any(!vec2) TRUE

Gibt es mindestens einen T? Oder mindestens einen F?

sum(any(!vec2)) 1

vec = c(T, T, F, T, F) sum(vec)

3

sum(!vec) 2

any()

(6)

x == y gleicht 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?

x = c(10, 20, 30) y = 20

x == y

FALSE TRUE FALSE x == 20

FALSE TRUE FALSE

Erster Fall: y besteht aus einem Element

Ein logischer Vektor entseht durch die

Anwendung von einem Vergleichungs-Operator

(7)

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

(8)

Vergleichungs-Operator

%in%

labs = c("I", "E", "O", "O", "O","I", "E") labs %in% "E" (kommt "E" in labs vor?)

FALSE TRUE FALSE FALSE FALSE FALSE TRUE

labs %in% c("I", "E") (kommen "E" oder "I" in labs vor?)

TRUE TRUE FALSE FALSE FALSE TRUE TRUE

dasselbe labs == "E"

dasselbe labs == "E" | labs == "I"

(9)

x = c(23, 5, 45, -10, 11)

lvec = x > 20

TRUE FALSE TRUE FALSE FALSE

Zugriff auf Elemente durch [logische Vektoren]

> x[lvec] bedeutet: die Elemente in x, für die lvec TRUE ist

23 45

x[!lvec]

5 -10 11

(10)

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) temp = zeit > 40

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) "Paul" "Georg"

Welche Dauern sind größer als 40?

(11)

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"

(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)

(13)

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)

(14)

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)

(15)

Gibt es Freunde, die mehr als 45 Minuten brauchen?

any()

temp = zeit > 45 any(temp)

TRUE

oder in einer Zeile:

any(zeit > 45) TRUE

freunde = c("Paul", "Karin", "Elke", "Georg", "Peter")

zeit = c(50, 11, 35, 41, 12)

(16)

Logische Vektoren und Matrizen

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

Trackdatei Label-Vektor

vowlax.fdat vowlax

Segmentliste

vowlax.l

(Formant-Werte zum zeitlichen Mittelpunkt)

on =

dcut(vowlax.fdat

, 0, prop=T)

(17)

F1 und F2 von "a" und "E" (zum Formant-Onset)

temp = vowlax.l %in% c("a", "E") Logischer Vektor um "a" und "E" zu identifizieren

Die F1- und F2-Werte zum Formant-Onset für "a" und "E"

on[ , ] temp 1:2

Trackdatei Label-Vektor

vowlax.fdat vowlax

Segmentliste

vowlax.l

(Formant-Werte zum zeitlichen Mittelpunkt)

on =

dcut(vowlax.fdat

, 0, prop=T)

(18)

Trackdatei Label-Vektor

vowlax.fdat vowlax

Segmentliste

vowlax.l

(Formant-Werte zum zeitlichen Mittelpunkt)

on =

dcut(vowlax.fdat , 0, prop=T)

Die Vokal-Etikettierungen, für die F1 (zum Onset) höher ist als 750 Hz.

temp =

Logischer Vektor um F1-Werte zu identifizieren, die höher als 750 Hz sind.

on[,1] > 750

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"

(19)

Trackdatei Label-Vektor

vowlax.fdat vowlax

Segmentliste

vowlax.l

(Formant-Werte zum zeitlichen Mittelpunkt)

on =

dcut(vowlax.fdat , 0, prop=T)

Die Segmente (aus der Segmentliste) für die F2 – F1 unter 400 Hz liegt.

temp =

vowlax[temp,]

Logischer Vektor um zu identifizieren, fuer welche Segmente (Reihen der Matrix on ) F2 – F1 (zum Formant-Onset) unter 400 Hz liegt.

on[,2] - on[,1] < 400 Die entsprechenden Segmente aus der Segmentliste

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

...

(20)

Trackdatei Label-Vektor

vowlax.fdat vowlax

Segmentliste

vowlax.l

(Formant-Werte zum zeitlichen Mittelpunkt)

on =

dcut(vowlax.fdat , 0, prop=T)

Der F3-Mittelwert von "E" Vokalen, in denen F1 (zum Formant-Onset) über 700 Hz liegt.

temp =

mean(on[temp,3])

&

vowlax.l == "E" on[,1] > 700 F3 Mittelwert für diese Vokale

Logischer Vektor um "E" Vokale & F1-Werte über 700 Hz zu identifizieren

3027

Referenzen

ÄHNLICHE DOKUMENTE

Shreiben Sie ein Programm geld., welhes vershiedene Geldanlagen einliest und dann an-.. hand der Benutzereingaben die beste verfügbare Geldanlage (inklusive der Geldsumme

[r]

[r]

[r]

In der &#34;alpha&#34; wurden eine Vielzahl von Arbeiten über die Geschichte der Mathematik veröffentlicht.. Die im folgenden chronologisch aufgelisteten, mathematikhistorischen

[r]

(e) Verwenden Sie logische Vektoren und die Antwort in (c), um eine neue Segmentliste aller [f] und [T] Segmente zu erzeugen, die in den Wörtern ‘if’. und

kis als Umbildung von ki scheitert daran, daß in diesem Fall auch andere wortscbließende k{i) zu kis hätten werden mUssen. Übrigens bleiben für den, der dieses ki-s anders