Grundlagen der R Programmiersprache - IPdS in Kiel · Grundlagen der R Programmiersprache Jonathan...

25
Grundlagen der R Programmiersprache Jonathan Harrington und Tina John IPDS, Kiel.

Transcript of Grundlagen der R Programmiersprache - IPdS in Kiel · Grundlagen der R Programmiersprache Jonathan...

Page 1: Grundlagen der R Programmiersprache - IPdS in Kiel · Grundlagen der R Programmiersprache Jonathan Harrington und Tina John IPDS, Kiel.

Grundlagen der R Programmiersprache

Jonathan Harrington und Tina John

IPDS, Kiel.

Page 2: Grundlagen der R Programmiersprache - IPdS in Kiel · Grundlagen der R Programmiersprache Jonathan Harrington und Tina John IPDS, Kiel.

ObjekteVektorBesteht aus einem oder mehrerern Elementenx = 3meinedatei = c(10, 20, -4)foo = c("Kiel", "Phonetik", "Gebaeude 10")

Matrix

Logischer Vektor

Besteht aus TRUE und FALSEWird verwendet, um auf Elemente unter gewissenBedingungen zuzugreifen

Eine Zusammensetzung aus Vektoren

rbind() und cbind()

Page 3: Grundlagen der R Programmiersprache - IPdS in Kiel · Grundlagen der R Programmiersprache Jonathan Harrington und Tina John IPDS, Kiel.

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)] odera = c(2, 5)datei[a]

Page 4: Grundlagen der R Programmiersprache - IPdS in Kiel · Grundlagen der R Programmiersprache Jonathan Harrington und Tina John IPDS, Kiel.

Arithmetische Funktionenwerden immer parallel auf Vektoren angewendet

> x = c(10, 20, 30)> y = c(-5, 0, 10)> x * y

[1] -50 0 300

Die length() Funktionwieviele Elemente in einem Vektor? > length(x)

[1] 3> length(y)

[1] 3> length(x)==length(y)

[1] TRUE

Page 5: Grundlagen der R Programmiersprache - IPdS in Kiel · Grundlagen der R Programmiersprache Jonathan Harrington und Tina John IPDS, Kiel.

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

Page 6: Grundlagen der R Programmiersprache - IPdS in Kiel · Grundlagen der R Programmiersprache Jonathan Harrington und Tina John IPDS, Kiel.

Arithmetische VorgängeWerden wie bei Vektoren parallel durchgeführt

> x[,1] [,2] [,3] [,4]

10 3 8 711 45 20 -1

> x -20[,1] [,2] [,3] [,4]-10 -17 -12 -13-9 25 0 -21

Page 7: Grundlagen der R Programmiersprache - IPdS in Kiel · Grundlagen der R Programmiersprache Jonathan Harrington und Tina John IPDS, Kiel.

> x[,1] [,2] [,3] [,4]

10 3 8 711 45 20 -1

> y[,1] [,2] [,3] [,4]

20 6 16 1422 90 40 -2

> x + y[,1] [,2] [,3] [,4]

30 9 24 2133 135 60 -3

Page 8: Grundlagen der R Programmiersprache - IPdS in Kiel · Grundlagen der R Programmiersprache Jonathan Harrington und Tina John IPDS, Kiel.

Anwendung von arithmetischen Funktionen

> x [,1] [,2] [,3] [,4]10 3 8 711 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

Page 9: Grundlagen der R Programmiersprache - IPdS in Kiel · Grundlagen der R Programmiersprache Jonathan Harrington und Tina John IPDS, Kiel.

Zugriff auf Elemente einer Matrix

> x[,1] [,2] [,3] [,4]

10 3 8 711 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

Page 10: Grundlagen der R Programmiersprache - IPdS in Kiel · Grundlagen der R Programmiersprache Jonathan Harrington und Tina John IPDS, Kiel.

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

Page 11: Grundlagen der R Programmiersprache - IPdS in Kiel · Grundlagen der R Programmiersprache Jonathan Harrington und Tina John IPDS, Kiel.

Logische Vektoren

> labs[1] "a" "e" "i" "e" "i" "a" "e"

"a" "a" "i"

> datenDauer 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 Daueraller /a/ Vokale berechnen.

Der Zugriff auf diese Daten erfolgtdurch logische Vektoren

Page 12: Grundlagen der R Programmiersprache - IPdS in Kiel · Grundlagen der R Programmiersprache Jonathan Harrington und Tina John IPDS, Kiel.

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

Page 13: Grundlagen der R Programmiersprache - IPdS in Kiel · Grundlagen der R Programmiersprache Jonathan Harrington und Tina John IPDS, Kiel.

> (T & F) | T

[1] TRUE

> ( (T | F ) & (T & T) | F)

[1] TRUE

Klammern

Material innerhalb ( ) wird zuerst bearbeitet

Page 14: Grundlagen der R Programmiersprache - IPdS in Kiel · Grundlagen der R Programmiersprache Jonathan Harrington und Tina John IPDS, Kiel.

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

Page 15: Grundlagen der R Programmiersprache - IPdS in Kiel · Grundlagen der R Programmiersprache Jonathan Harrington und Tina John IPDS, Kiel.

Vergleichungs-Operator

x == y gleicht x y? != gleicht nichtx < y ist x weniger als y? > größer als

<= weniger oder gleichtx %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

Page 16: Grundlagen der R Programmiersprache - IPdS in Kiel · Grundlagen der R Programmiersprache Jonathan Harrington und Tina John IPDS, Kiel.

Vergleichungs-Operator

Zweiter Fall. x und y sind zueinanderparallel (und bestehen daher aus der selbenAnzahl von Elementen)

> x = c(10, 20, 30)

> y = c(9, 50, 30)

> x == y

[1] FALSE FALSE TRUE

Page 17: Grundlagen der R Programmiersprache - IPdS in Kiel · Grundlagen der R Programmiersprache Jonathan Harrington und Tina John IPDS, Kiel.

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

Page 18: Grundlagen der R Programmiersprache - IPdS in Kiel · Grundlagen der R Programmiersprache Jonathan Harrington und Tina John IPDS, Kiel.

> 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

Page 19: Grundlagen der R Programmiersprache - IPdS in Kiel · Grundlagen der R Programmiersprache Jonathan Harrington und Tina John IPDS, Kiel.

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 Minutenbrauchen, um in die Arbeit zu kommen.

(b) [1] "Paul" "Georg"

Page 20: Grundlagen der R Programmiersprache - IPdS in Kiel · Grundlagen der R Programmiersprache Jonathan Harrington und Tina John IPDS, Kiel.

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

Page 21: Grundlagen der R Programmiersprache - IPdS in Kiel · Grundlagen der R Programmiersprache Jonathan Harrington und Tina John IPDS, Kiel.

Schreiben Sie R-Befehle für: Welcher Freund brauchtam längsten?Hier muss auch die max() Funktion verwendetwerden:> y = c(10, 20, 30)> max(y)[1] 30

> temp = zeit == max(zeit)> freunde[temp][1] "Paul"Oder> freunde[zeit == max(zeit)][1] "Paul"

Page 22: Grundlagen der R Programmiersprache - IPdS in Kiel · Grundlagen der R Programmiersprache Jonathan Harrington und Tina John IPDS, Kiel.

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"

Page 23: Grundlagen der R Programmiersprache - IPdS in Kiel · Grundlagen der R Programmiersprache Jonathan Harrington und Tina John IPDS, Kiel.

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

sum()> temp = zeit < 40

> sum(temp)

[1] 3

Oder> sum(zeit < 40)

Page 24: Grundlagen der R Programmiersprache - IPdS in Kiel · Grundlagen der R Programmiersprache Jonathan Harrington und Tina John IPDS, Kiel.

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

Page 25: Grundlagen der R Programmiersprache - IPdS in Kiel · Grundlagen der R Programmiersprache Jonathan Harrington und Tina John IPDS, Kiel.

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