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
© Copyright 2024 ExpyDoc