¨Ubungen zu Programmierung mit R – Teil 2 - Fakultät Statistik

Dr. Uwe Ligges
M.Sc. Ieva Zelo u.v.a.
SoSe 2015
Fakult¨at Statistik
TU Dortmund
¨
Ubungen
zu Programmierung mit R – Teil 2
Blatt 3
Aufgabe 9 – Debugging und Scoping (3 + 3 = 6 Punkte)
Gegeben
sind
folgende
2
Codebl¨ocke,
die
Sie
\\server01\lehre\ProgrammierenR\Daten\scope9.R finden:
auch
in
der
Datei
## Block A)
a <- letters
z <- 1:10
foo <- function(m){
x <- c(5, 10)
z <- c(7, 2)
bar <- function(x){
paste(m[z], collapse="")
}
bar(x)
}
foo(a)
########################
## Block B)
a <- letters
z <- 1:10
bar <- function(x){
paste(a[z], collapse="")
}
foo <- function(m){
x <- c(5, 10)
z <- c(7, 2)
bar(x)
}
foo(a)
a) Verwenden Sie f¨
ur beide Bl¨
ocke die verschiedenen kennengelernten Debugging Werkzeuge, um
die Umgebungen der Funktionen foo und bar zu inspizieren.
b) Erkl¨aren Sie detailliert f¨
ur beide Bl¨ocke, in welcher Umgebung welche Objekte sichtbar sind,
und wann Objekte gesucht werden, die nicht in der aktuellen Umgebung vorhanden sind.
Erkl¨aren Sie außerdem, in welcher Umgebung solche Objekte jeweils gefunden werden.
1
Aufgabe 10 – Debugging und Scoping (2 + 2 = 4 Punkte)
Betrachten Sie die rekursiv berechneten Fibonacci-Zahlen. In der folgenden Funktion fibo, die
Sie auch in der Datei \\server01\lehre\ProgrammierenR\Daten\fibo10.R finden, ist ein Fehler
eingebaut:
fibo <- function(n){
if(n == 0) return(0)
if(n == 1) return(1)
if(n == 5) return(length(x))
fibo(n-1) + fibo(n-2)
}
Versuchen Sie mithilfe von Ausgaben auf die Konsole und/oder Debugging Werkzeugen f¨
ur den
Aufruf fibo(7) herauszufinden
a) im wievielten Funktionsaufruf von fibo der Fehler auftritt,
b) wie viele Umgebungen offen sind, wenn der Fehler auftritt.
Beschreiben Sie dabei jeweils Ihr Vorgehen!
Hinweis: Beachten Sie bei der Arbeit mit dem Browser, dass dieser bestimmte, teils einbuchstabige
Kommandos annimmt (siehe auch ?browser f¨
ur eine Auflistung). Wenn es ein gleichnamiges
Objekt in der jeweiligen Umgebung gibt, so kann dessen Wert im Browser nur mit print()
ausgegeben werden.
Aufgabe 11 – Empirische Verteilungsfunktion (1 + 1 + 1 + 1 = 4 Punkte)
Schreiben Sie eine Funktion emp.F, welche f¨
ur einen Vektor x die empirische Verteilungsfunktion
ausgibt. Dabei sollen folgende Punkte beachtet werden:
a) Die empirische Verteilungsfunktion ist eine Treppenfunktion, bei der die Spr¨
unge mit Punkten
gekennzeichnet werden sollen.
b) Die Grenzen 0 und 1 der y-Achse sollen als Voreinstellung mit grauer gestrichelter Linie
kenntlich gemacht werden. Die Nutzer sollen jedoch die M¨oglichkeit haben, diese wegzulassen.
c) Die y-Achse soll als Voreinstellung mit Fn (x) beschriftet werden. Legen Sie eine geeignete
¨
Uberschrift
als Voreinstellung fest.
d) Die Nutzer sollen die M¨
oglichkeit haben, weitere Grafikargumente in Ihrer Funktion emp.F
anzugeben, wie zum Beispiel (aber nicht nur) lwd, lty, und cex.
Abgabetermin
¨
Abgabe in elektronischer Form bis sp¨atestens am Tag nach Ihrer Ubung
um 19:00 in den daf¨
ur
vorgesehenen Ordner.
2