schleifen in r

19

Click here to load reader

Upload: mark-heckmann

Post on 25-May-2015

314 views

Category:

Education


1 download

DESCRIPTION

for-Schleife in T

TRANSCRIPT

Page 1: Schleifen in R

Schleifen Mark Heckmann

University of Bremen, Germany www.markheckmann.de

Version Januar, 2014

© CC BY-NC 2.0 DE

Page 2: Schleifen in R

Übliche Situation beim Rekodieren

library(car)!!rec <- "3=1; 2=2; 1=3; else=NA" !x[ , 1] <- recode(x[ , 1], rec)!x[ , 2] <- recode(x[ , 2], rec)!x[ , 3] <- recode(x[ , 3], rec)!x[ , 4] <- recode(x[ , 4], rec)!x[ , 5] <- recode(x[ , 5], rec)!...!

Die Variablen in den Spalten 1 bis 10 sollen auf die gleiche Art rekodiert werden!

Page 3: Schleifen in R

Vereinfachung durch for-Schleife

rec <- "3=1; 2=2; 1=3; else=NA" !!for (i in 1:10) {!!x[ , i] <- recode(x[ , i], rec)!

}!

Page 4: Schleifen in R

Schleifen dienen dazu Codeblöcke zu wiederholen Bei jeden Durchlauf werden meist kleiner Änderungen (z.B. Variablenname) vorgenommen

Page 5: Schleifen in R

Die for-Schleife

Page 6: Schleifen in R

Grundstruktur der for-Schleife

for (Steuervariable in Vektor) {!!R Befehl!!R Befehl!!...!

}

Beliebiger Name, häufig i!

Ein Vektor (numerisch,

Zeichen, logisch!

Code, der bei jedem Durchlauf ausgeführt wird!

Page 7: Schleifen in R

Grundstruktur der for-Schleife

for (i in 1:3) {!!i!

}!!

Kein Fehler und trotzdem sehen wir nichts. Wieso?!

Page 8: Schleifen in R

Exkurs print Funktion

a <- 10!a!print(a)!

Wann immer etwas in R eingeben und Enter drücken, erfolgt eine Ausgabe in der Konsole. Dies Ausgabe wird von der Funktion print erzeugt. Die Funktion print wird immer „heimlich“ aufgerufen, wenn wir Enter drücken. Man kann dies jedoch auch explizit tun.!

Page 9: Schleifen in R

Exkurs print Funktion

for (i in 1:3) {!!i!

}!

for (i in 1:3) {!!print(i)!!

}

In Schleifen wird die print Funktion nicht mehr automatisch aufgerufen. Deshalb müssen wir dies explizit tun, wenn wir etwas in die Konsole schreiben wollen,!

Page 10: Schleifen in R

Grundstruktur der for-Schleife

for (i in 1:3) {!!print(i)!

}!!Die Steuervariable i nimmt der Reihe nach die Werte in dem Vektor (hier 1:3) an. !Im ersten Durchlauf die 1, im zweiten die 2, im dritten die 3. Fertig.

Page 11: Schleifen in R

Vereinfachung durch for-Schleife

rec <- "3=1; 2=2; 1=3; else=NA" !!for (i in 1:10) {!!x[ , i] <- recode(x[ , i], rec)!

}!

Neues Spalte i in jedem Durchlauf!

Page 12: Schleifen in R

Rekodiere die Werte der Variablen des Datensatzes attitude wie folgt mit Hilfe einer for-Schleife

[0, 30] = 1 ]30, 60] = 2 ]60, 100] = 3

Your turn

Page 13: Schleifen in R

Zeichenvektor

for (buchstabe in c("a","b","c")) {!!print(buchstabe)!

}!

Die Werte, die die Steuervariable durchläuft müssen nicht numerisch sein.!

Page 14: Schleifen in R

Rekodiere die Werte der Variablen des Datensatzes attitude wie zuvor mit Hilfe einer for-Schleife.

Nutze jedoch diesmal die Variablennamen in der Schleife.

[Hinweis: names() nutzen]

Your turn

Page 15: Schleifen in R

Anwendung: Indizieren

Durch die for-Schleife werden sukzessiv die Indizes 1 bis 10 durchlaufen. a <- NA !for (i in 1:10) {!!a[i] <- i^2!

}!

Page 16: Schleifen in R

Generiere 1000 Mal 25 zufällige Werte ~ N(100,15), berechne

jeweils den Mittelwert und speichere das Ergebnis. Berechne

anschließend die Streuung der Ergebnisse. Wie groß müsste die

Streuung theoretisch sein?

Your turn

Page 17: Schleifen in R

Wir haben einen Ordner mit vielen Teildatensätzen files <- dir()!

files!![1] "2373254.csv" "2828478.csv" ![3] "2828808.csv" "2828829.csv" ![5] "2828860.csv" "2829204.csv" !...!

Anwendung: Datensätze verbinden

Page 18: Schleifen in R

Diese sollen zu einem großen Datensatz zusammengefügt werden

files <- dir()!!d <- NULL!!x <- read.csv2(files[1])!d <- rbind(d, x)!!x <- read.csv2(files[2])!d <- rbind(d, x)!!etc.!

Anwendung: Datensätze verbinden

Page 19: Schleifen in R

Schreibe eine Schleife, die alle Dateien automatisiert

zusammenfügt

Your turn