Kontrollstrukturen

Kontrollstrukturen sind die Befehle an die man wahrscheinlich als erstes denkt, wenn man das Stichwort »programmieren« hört. Sie kommen in nahezu allen Sprachen vor - auch in . Im Folgenden sind zwei ausgewählte Kontrollstrukturen etwas genauer beschrieben: ifelse() und die for-Schleife.

ifelse

ifelse wird von Sozialwissenschaftler:innen sehr oft zum Rekodieren von Variablen benutzt. Es hat die Struktur

ifelse(Wahrheitsprüfung, falls TRUE, falls FASLE)

1berufe <- c("Bäcker", "Grundschullehrer", "Studienrätin", "Architektin")

2lehrer_in <-
3  ifelse(berufe %in% c("Grundschullehrer", "Studienrätin"),
4         "Lehrer:in",
5         "keine Lehrer:in")
print(lehrer_in)                                                                
1
Definion der Daten
2
Erstellung neues Objekts
3
Wahrheitsprüfung ob die Elemente von berufe gleich Grundschullehrer oder Studienrätin sind
4
Falls 3 TRUE, schreibe "Lehrer:in"
5
Falls 3 FALSE, schreibe "keine Lehrer:in"

Übung 1

Wie kann der Vektor c("kein Abschluss", "Abitur", "Fachhochschulreife") in einen Vektor c("keine HZB", "HZB", "HZB") (HZB = Hochschulzugangsberechtigung) rekodiert werden?

NoteHinweis:

Passe das zuvor gegebene Beispiel an.

TipLösung:
abschluesse <- c("kein Abschluss", "Abitur", "Fachhochschulreife")  

hzb <-                                                               
  ifelse(abschluesse %in% c("Abitur", "Fachhochschulreife"),                
         "HZB",                                                      
         "keine HZB")                                                
print(hzb)  

Schleifen

Schleifen kommen in eher selten vor, weil es dort oft elegantere Wege gibt, dasselbe zu erreichen. Sozialwissenschaftler:innen nutzen sie aber oft für Simulationen (z.B. für Poweranalysen).

In R gibt es die folgenden Schleifen

Schleife Beschreibung
for Wiederholt Code für eine feste Anzahl von Durchläufen
while Wiederholt Code, solange eine Bedingung erfüllt ist
repeat Wiederholt Code unendlich, bis break aufgerufen wird
next Überspringt die aktuelle Iteration, fährt aber fort
break Bricht die Schleife sofort ab

for-Schleifen

TipBeispielstudie

Angenommen ein Forscher:innenteam möchte eine deskriptive Studie durchführen und die Forschungsfrage fragt nach der Prävalenz von Klassenwiederholung in der Grundschule. Da sich die Behörden nicht auskunftsbereit zeigen, startet das Team eine Random Digit Dialling Befragung - wählt also zufällig generierte Telefonnummern, fragt ob Eltern von Grundschüler:innen am Telefon sind und falls ja, ob diese:r Grundschüler:in dieses Jahr die Klasse wiederholt. Das Team hat jedoch nur die Ressourcen für 1000 Anrufe bei Eltern und fragt sich, wie präzise es damit die Prävalenz schätzen kann.

Diese Abschätzung kann man mit einer for-Schleife erzielen. Dazu

  1. nimmt man eine Prävalenz an (z.B. 3%)
  2. aus einer Urne in der 97 Kugeln mit 0 beschriftet sind (Versetzung) und 3 Kugeln mit 1 (Sitzenbleiben) zieht man 100 mal mit zurücklegen..
  3. berechnet die Summe der Kugeln geteilt durch 1000 (Anteil der Wiederholer:innen)
  4. wiederholt 2 und 3 sehr oft (hier 100 mal - realistischerweise eher \(10^5\) mal).
1for(i in 1:100){
2    stichprobe_i <-
        sample(c(0,1),
               size = 1000,
               replace = TRUE,
               prob = c(.97, .03))
3    mean_i <- mean(stichprobe_i)
4    print(mean_i)
}                               
1
Startet die for-Schleife. Die Runde Klammer definiert den »Laufindex«, in der geschweiften Klammer wird definiert was für jeden Laufindex passieren soll.
2
Für jedes i wird ein Objekt namens stichprobe_i angelegt, das 1000 Einträge hat, die mit Wahrscheinlichkeit 97% 0 und 3% 1 betragen.
3
Von dieser Stichprobe wird das arithmetische Mittel berechnet
4
Dieses arithmetische Mittel wird ausgegeben

Übung 2

Exekutieren Sie die gegebene for-Schleife und interpretiert das Ergebnis. Verändern Sie die Stichprobengröße (size =) auf 5, 50 und 50000 und sagen Sie jeweils vorher wie sich das Ergebnis ändern wird.