SlideShare ist ein Scribd-Unternehmen logo
1 von 19
Downloaden Sie, um offline zu lesen
Schleifen
Mark Heckmann
University of Bremen, Germany
www.markheckmann.de
Version Januar, 2014
© CC BY-NC 2.0 DE
Übliche Situation beim Rekodieren
Die Variablen in den Spalten 1 bis 10
sollen auf die gleiche Art rekodiert
werden!
library(car)!
!
rec <- "3=1; 2=2; 1=3;
x[ , 1] <- recode(x[ ,
x[ , 2] <- recode(x[ ,
x[ , 3] <- recode(x[ ,
x[ , 4] <- recode(x[ ,
x[ , 5] <- recode(x[ ,
...!

else=NA" !
1], rec)!
2], rec)!
3], rec)!
4], rec)!
5], rec)!
Vereinfachung durch for-Schleife

rec <- "3=1; 2=2; 1=3; else=NA" !
!
for (i in 1:10) {!
!x[ , i] <- recode(x[ , i], rec)!
}!
Schleifen dienen dazu Codeblöcke
zu wiederholen
Bei jeden Durchlauf werden meist
kleiner Änderungen (z.B.
Variablenname) vorgenommen
Die forSchleife
Grundstruktur der for-Schleife
Beliebiger Name,
häufig i!

Ein Vektor
(numerisch,
Zeichen, logisch!

for (Steuervariable in Vektor) {!
!R Befehl!
!R Befehl!
!...!
Code, der bei
jedem Durchlauf
}

ausgeführt wird!
Grundstruktur der for-Schleife
for (i in 1:3) {!
!i!
}!
!

Kein Fehler und trotzdem sehen wir
nichts. Wieso?!
Exkurs print Funktion
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.!
a <- 10!
a!
print(a)!
Exkurs print Funktion
for (i in 1:3) {!
!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,!
for (i in 1:3) {!
!print(i)
!!
}
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.
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!
Your turn
Rekodiere die Werte der Variablen
des Datensatzes attitude wie
folgt mit Hilfe einer for-Schleife
[0, 30] = 1
]30, 60] = 2
]60, 100] = 3
Zeichenvektor
Die Werte, die die Steuervariable
durchläuft müssen nicht numerisch sein.!
for (buchstabe in c("a","b","c")) {!
!print(buchstabe)!
}!
Your turn
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]
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!
}!
Your turn
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?
Anwendung: Datensätze verbinden
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
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.!
Your turn
Schreibe eine Schleife, die
alle Dateien automatisiert
zusammenfügt

Weitere ähnliche Inhalte

Ähnlich wie Schleifen in R

Multithreaded Algorithms
Multithreaded Algorithms Multithreaded Algorithms
Multithreaded Algorithms Kersten Broich
 
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins Christian Kauhaus
 
Eine Reise durch den PostgreSQL Optimizer
Eine Reise durch den PostgreSQL OptimizerEine Reise durch den PostgreSQL Optimizer
Eine Reise durch den PostgreSQL Optimizerpsoo1978
 
Distribution of the number of times m m 2 n
Distribution of the number of times m m 2 nDistribution of the number of times m m 2 n
Distribution of the number of times m m 2 nprj_publication
 
Distribution of the number of times m m 2 n
Distribution of the number of times m m 2 nDistribution of the number of times m m 2 n
Distribution of the number of times m m 2 nprjpublications
 
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...gedoplan
 
Java Streams und Lambdas
Java Streams und LambdasJava Streams und Lambdas
Java Streams und LambdasNane Kratzke
 
Übungsaufgaben
ÜbungsaufgabenÜbungsaufgaben
Übungsaufgabenmaikinger
 

Ähnlich wie Schleifen in R (8)

Multithreaded Algorithms
Multithreaded Algorithms Multithreaded Algorithms
Multithreaded Algorithms
 
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
 
Eine Reise durch den PostgreSQL Optimizer
Eine Reise durch den PostgreSQL OptimizerEine Reise durch den PostgreSQL Optimizer
Eine Reise durch den PostgreSQL Optimizer
 
Distribution of the number of times m m 2 n
Distribution of the number of times m m 2 nDistribution of the number of times m m 2 n
Distribution of the number of times m m 2 n
 
Distribution of the number of times m m 2 n
Distribution of the number of times m m 2 nDistribution of the number of times m m 2 n
Distribution of the number of times m m 2 n
 
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...
 
Java Streams und Lambdas
Java Streams und LambdasJava Streams und Lambdas
Java Streams und Lambdas
 
Übungsaufgaben
ÜbungsaufgabenÜbungsaufgaben
Übungsaufgaben
 

Mehr von Mark Heckmann

The OpenRepGrid project – Software tools for the analysis and administration...
The OpenRepGrid project – Software tools  for the analysis and administration...The OpenRepGrid project – Software tools  for the analysis and administration...
The OpenRepGrid project – Software tools for the analysis and administration...Mark Heckmann
 
R Knitr - generating reports
R Knitr - generating reportsR Knitr - generating reports
R Knitr - generating reportsMark Heckmann
 
A new development in the hierarchical clustering of repertory grid data
A new development in the hierarchical clustering of repertory grid dataA new development in the hierarchical clustering of repertory grid data
A new development in the hierarchical clustering of repertory grid dataMark Heckmann
 
OpenRepGrid and Friends
OpenRepGrid and FriendsOpenRepGrid and Friends
OpenRepGrid and FriendsMark Heckmann
 
Übersicht Glm Workshop 2009
Übersicht Glm Workshop 2009Übersicht Glm Workshop 2009
Übersicht Glm Workshop 2009Mark Heckmann
 

Mehr von Mark Heckmann (6)

The OpenRepGrid project – Software tools for the analysis and administration...
The OpenRepGrid project – Software tools  for the analysis and administration...The OpenRepGrid project – Software tools  for the analysis and administration...
The OpenRepGrid project – Software tools for the analysis and administration...
 
R Knitr - generating reports
R Knitr - generating reportsR Knitr - generating reports
R Knitr - generating reports
 
Knitr Formeln - R
Knitr Formeln - RKnitr Formeln - R
Knitr Formeln - R
 
A new development in the hierarchical clustering of repertory grid data
A new development in the hierarchical clustering of repertory grid dataA new development in the hierarchical clustering of repertory grid data
A new development in the hierarchical clustering of repertory grid data
 
OpenRepGrid and Friends
OpenRepGrid and FriendsOpenRepGrid and Friends
OpenRepGrid and Friends
 
Übersicht Glm Workshop 2009
Übersicht Glm Workshop 2009Übersicht Glm Workshop 2009
Übersicht Glm Workshop 2009
 

Schleifen in R

  • 1. Schleifen Mark Heckmann University of Bremen, Germany www.markheckmann.de Version Januar, 2014 © CC BY-NC 2.0 DE
  • 2. Übliche Situation beim Rekodieren Die Variablen in den Spalten 1 bis 10 sollen auf die gleiche Art rekodiert werden! library(car)! ! rec <- "3=1; 2=2; 1=3; x[ , 1] <- recode(x[ , x[ , 2] <- recode(x[ , x[ , 3] <- recode(x[ , x[ , 4] <- recode(x[ , x[ , 5] <- recode(x[ , ...! else=NA" ! 1], rec)! 2], rec)! 3], rec)! 4], rec)! 5], rec)!
  • 3. Vereinfachung durch for-Schleife rec <- "3=1; 2=2; 1=3; else=NA" ! ! for (i in 1:10) {! !x[ , i] <- recode(x[ , i], rec)! }!
  • 4. Schleifen dienen dazu Codeblöcke zu wiederholen Bei jeden Durchlauf werden meist kleiner Änderungen (z.B. Variablenname) vorgenommen
  • 6. Grundstruktur der for-Schleife Beliebiger Name, häufig i! Ein Vektor (numerisch, Zeichen, logisch! for (Steuervariable in Vektor) {! !R Befehl! !R Befehl! !...! Code, der bei jedem Durchlauf } ausgeführt wird!
  • 7. Grundstruktur der for-Schleife for (i in 1:3) {! !i! }! ! Kein Fehler und trotzdem sehen wir nichts. Wieso?!
  • 8. Exkurs print Funktion 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.! a <- 10! a! print(a)!
  • 9. Exkurs print Funktion for (i in 1:3) {! !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,! for (i in 1:3) {! !print(i) !! }
  • 10. 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.
  • 11. 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!
  • 12. Your turn Rekodiere die Werte der Variablen des Datensatzes attitude wie folgt mit Hilfe einer for-Schleife [0, 30] = 1 ]30, 60] = 2 ]60, 100] = 3
  • 13. Zeichenvektor Die Werte, die die Steuervariable durchläuft müssen nicht numerisch sein.! for (buchstabe in c("a","b","c")) {! !print(buchstabe)! }!
  • 14. Your turn 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]
  • 15. 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! }!
  • 16. Your turn 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?
  • 17. Anwendung: Datensätze verbinden 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" ! ...!
  • 18. Anwendung: Datensätze verbinden 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.!
  • 19. Your turn Schreibe eine Schleife, die alle Dateien automatisiert zusammenfügt