• Keine Ergebnisse gefunden

Grundlagen der R Programmiersprache

N/A
N/A
Protected

Academic year: 2022

Aktie "Grundlagen der R Programmiersprache"

Copied!
25
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Grundlagen der R Programmiersprache

Jonathan Harrington und Tina John

IPDS, Kiel.

(2)

Objekte

Vektor

Besteht aus einem oder mehrerern Elementen

x = 3

meinedatei = c(10, 20, -4)

foo = c("Kiel", "Phonetik", "Gebaeude 10")

Matrix

Logischer Vektor

Besteht aus TRUE und FALSE

Wird verwendet, um auf Elemente unter gewissen Bedingungen zuzugreifen

Eine Zusammensetzung aus Vektoren

rbind()

und

cbind()

(3)

Vektoren: Zugriff auf Elemente

datei = c("Kiel", "Phonetik", "Gebaeude 10", "Sprache", 2002)

datei[2] datei[2:4]

datei[-3]

Alle Elemente außer "Gebaeude 10"

Elemente 2 und 5

datei[c(2, 5)]

oder

a = c(2, 5) datei[a]

(4)

Arithmetische Funktionen

werden immer parallel auf Vektoren angewendet

> x = c(10, 20, 30)

> y = c(-5, 0, 10)

> x * y

[1] -50 0 300

Die length() Funktion

wieviele Elemente in einem Vektor?

> length(x)

[1] 3

> length(y)

[1] 3

> length(x)==length(y)

[1] TRUE

(5)

Matrizen

> a = c(10, 3, 8, 7)

> b = c(11, 45, 20, -1)

> x = rbind(a, b)

> x

[,1] [,2] [,3] [,4]

[1,] 10 3 8 7 [2,] 11 45 20 -1

rbind(): Reihenverbindung cbind(): Spaltenverbindung

> y = cbind(a, b)

> y

[1,] 10 11 [2,] 3 45 [3,] 8 20 [4,] 7 –1

Reihenanzahl

> nrow(x) [1] 2

Spaltenanzahl

> ncol(x) [1] 4

Dimensionenanzahl

> dim(x)

[1] 2 4

(6)

Arithmetische Vorgänge

Werden wie bei Vektoren parallel durchgeführt

> x

[,1] [,2] [,3] [,4]

10 3 8 7 11 45 20 -1

> x -20

[,1] [,2] [,3] [,4]

-10 -17 -12 -13 -9 25 0 -21

(7)

> x

[,1] [,2] [,3] [,4]

10 3 8 7 11 45 20 -1

> y

[,1] [,2] [,3] [,4]

20 6 16 14 22 90 40 -2

> x + y

[,1] [,2] [,3] [,4]

30 9 24 21 33 135 60 -3

(8)

Anwendung von arithmetischen Funktionen

> x

[,1] [,2] [,3] [,4]

10 3 8 7 11 45 20 -1

> mean(x) [1] 12.875

(Durchschnitt aller Elemente) Durchschnitt der Reihen

> apply(x, 1, mean) [1] 7.00 18.75

Zentralwert der Spalten

> apply(x, 2, median) [1] 10.5 24.0 14.0 3.0

(9)

Zugriff auf Elemente einer Matrix

> x

[,1] [,2] [,3] [,4]

10 3 8 7 11 45 20 -1

> x[2,4]

= Reihe 2, Spalte 4

[1] -1

Nur Reihe 2

> x[2,]

[1] 11 45 20 –1

Nur Spalte 3

> x[,3]

[1] 8 20

(10)

Zugriff auf Elemente einer Matrix

Reihen 2 und 3 Spalten 2 und 4

Reihen 2 und 3 von Spalten 3 bis 4 Spalten 2 und 4

Spalte 1 von Reihen 2 und 4 Spalten 1 bis 3 von allen

Reihen außer Reihe 2

> neumat[2:3,]

> neumat[,c(2,4)]

> neumat[2:3,3:4]

> neumat[,c(2,4)]

> neumat[c(2,4),1]

> neumat[-2,1:3]

neumat ist eine Matrix

(11)

Logische Vektoren

> labs

[1] "a" "e" "i" "e" "i" "a" "e"

"a" "a" "i"

> daten

Dauer F1 [1,] 33 979 [2,] 56 592 [3,] 37 224 [4,] 50 597 [5,] 49 281 [6,] 21 737 [7,] 38 520 [8,] 32 887 [9,] 21 755 [10,] 60 343

Wir möchten den

Durchschnittswert der Dauer aller /a/ Vokale berechnen.

Der Zugriff auf diese Daten erfolgt

durch logische Vektoren

(12)

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

(13)

> (T & F) | T [1] TRUE

> ( (T | F ) & (T & T) | F) [1] TRUE

Klammern

Material innerhalb ( ) wird zuerst bearbeitet

(14)

Wieviele T? Wieviele F?

sum()

> any(vec) [1] TRUE

> any(!vec) [1] TRUE

Logische Vektoren, sum() und any()

> vec _ c(F, F, F, F)

> any(vec) [1] FALSE

> any(!vec) [1] TRUE

Gibt es mindestens ein T? Oder mindestens ein F?

> sum(any(!vec)) [1] 1

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

> sum(vec) [1] 3

> sum(!vec) [1] 2

any()

(15)

Vergleichungs-Operator

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

[1] FALSE TRUE FALSE

> X == 20

[1] FALSE TRUE FALSE

Erster Fall: y besteht aus einem Element

(16)

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

(17)

Vergleichungs-Operator

%in%

> labs %in% "E"

(wo kommt "E" in labs vor?)

> labs = c("I", "E", "O", "O", "O","I", "E")

[1] FALSE TRUE FALSE FALSE FALSE FALSE TRUE

> labs %in% c("I", "E")

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

(18)

> x _ c(23, 5, 45, -10, 11)

> lvec = x > 20

[1] TRUE FALSE TRUE FALSE FALSE

> x[lvec]

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

Zugriff auf Elemente durch [logische Vektoren]

[1] 23 45

> x[!lvec]

[1] 5 -10 11

(19)

Meine Freunde

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

Die Dauer in Minuten ihrer Reise in die Arbeit

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

Welche Dauern sind größer als 40?

> temp = zeit > 40

[1] TRUE FALSE FALSE TRUE FALSE

> temp

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

(20)

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

(21)

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"

(22)

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"

(23)

R-Befehle für: Wieviele Freunde brauchen weniger als 40 Minuten?

sum()

> temp = zeit < 40

> sum(temp) [1] 3

Oder

> sum(zeit < 40)

(24)

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

(25)

Bitte Fragen auf Seiten 21/22 in R.doc/pdf beantworten, und das

gesamte Dokument lesen/in R ausprobieren

Referenzen

ÄHNLICHE DOKUMENTE

Die Matrix vdata.emu enthält diese Daten, die in den Reihen für 812 Vokale gespeichert sind:. Dauer

Welche Luflinien haben mehr Abflüge nach Hong Kong als nach Manilla?. Welche Luftlinien haben mehr Flüge nach London als nach Auckland und Tokyo

• Ruhende elektrische Ladungen erzeugen

Eine skalare Variable speichert eine einzelne Zahl

[r]

W¨ aren wir jetzt in einem der (wie es Barney aus ”himym” ausdr¨ ucken w¨ urde) legend¨ aren B¨ ucher von Wolf Haas, w¨ urde an dieser Stel- le der Satz ”Jetzt ist schon

The occupation number of a magnetically trapped Bose-Einstein condensate is limited for atoms with attractive interactions.. It has been predicted that, as this limit is approached,

[r]