Kursziele. Fortgeschrittene Programmierung mit R. Statistik und Computer. Philosophisches. Applications. Theory. Methodology

Größe: px
Ab Seite anzeigen:

Download "Kursziele. Fortgeschrittene Programmierung mit R. Statistik und Computer. Philosophisches. Applications. Theory. Methodology 1950 2000"

Transkript

1 Kursziele Verwendung einer objekt-orientierten statistischen Rechenumgebung zur Umsetzung neuer Methoden Einsatz neuerer graphischer Verfahren Fortgeschrittene Programmierung mit R Torsten Hothorn Institut für Statistik Ludwig-Maximilians-Universität München Automatisiertes Verteilen und Testen von Software, Daten und Dokumentation John Chambers: Turn ideas into software, quickly and faithfully. Einleitung Hilfe zur Selbsthilfe WS 2007/ Statistik und Computer Efron (2001): Statistik im 20. Jahrhundert Applications Philosophisches 1900 Theory? Methodology Mathematics Computation WS 2007/2008 3

2 Formeln und Code Was ist Statistiksoftware? Formeln sind der bei weitem effizienteste und eleganteste Weg, um mathematische Zusammenhänge auszudrücken: 1 + e iπ = 0 Ähnliches gilt für Programmiersprachen und Computer: Eine Programm, das Zahlen als Input nimmt, und daraus Tabellen (und Grafiken) erzeugt? Ein(e) (Sammlung von) Programm(en) für Exploration, Inferenz und Modellierung? R> all.equal(exp(1i*pi)+1, 0+0i) [1] TRUE Das Schöne (und Schwierige?) an Statistik ist, daß wir mit Mathematik unsere Theorien beschreiben, und Computer verwenden, um Daten zu analysieren. Ein Werkzeug zur Verwaltung, Manipulation und Analyse von Daten? Ein Kommunikationsmedium mit CPU (Grafikarte, Drucker,... ) des Rechners? WS 2007/ WS 2007/ Kommunikationsformen Relevanz für Datenanalysen Zeichensprachen: Leicht zu lernen, oft universell verständlich, in Komplexität und Ausdrucksform limitiert. Bsp: österr. Verkehrszeichen, Apple-GUIs, etc. Schriftsprachen: Schwer zu lernen, Festlegung auf Sprache, in Komplexität und Ausdrucksform nahezu unlimitiert. Bsp: österr. Deutsch, UNIX-Shell, etc. Sehen Sie Statistiksoftware (auch) als Hilfsmittel, um dem Computer mitzuteilen, wie Sie Ihre Daten analysieren wollen. Für einfache Analysen reichen einfache Kommunikationsformen, aber selbst im komplexesten GUI haben Sie irgendwann das letzte Untermenü erreicht. In programmierbaren Umgebungen hängt die Decke des Möglichen bedeutend höher. S hat den Oscar der Software-Systeme gewonnen, darauf werden S S oder S S noch ein wenig warten müssen. WS 2007/ WS 2007/2008 7

3 Relevanz für Datenanalysen R-Befehle sind Ihre Anweisungen an den Computer. Kommandos, die Sie direkt am Prompt tippen, ähneln verbalen Zurufen: schnell kommuniziert und verarbeitet, schnell vergessen. Arbeiten mit R Dinge, die man sich länger merken will, schreibt man sich auf dasselbe gilt für Datenanlysen. Tipp 1: Schreiben Sie Ihre Analysen in einem Editor, sparen Sie nicht mit Kommentaren, beginnen Sie am Anfang (= Daten einlesen). WS 2007/ Administration von R R ist ein mächtiges, aber auch komplexes Werkzeug. Die Heimat von S ist auch die Heimat von Unix und C (New Jersey, nicht Redmond oder Palo Alto). Schon Installation und Administration von R haben für Windows-User ungewohnte Aspekte, seien Sie urban und erlauben ein wenig Multikulti am PC. Nicht alles, was anders ist, muß deshalb schlecht sein. Das Wiener Schnitzel kommt eigentlich auch aus Mailand. Die absolute Mehrheit von R Core benutzt Unix/Linux als Computerplattform. Administration von R Eine wichtiger Aspekt für einen laufenden R Prozess ist das derzeitige Arbeitsverzeichnis. Unter Unix wird R meist aus der Shell gestartet und nimmt das Startverzeichnis als Arbeitsverzeichnis. In einem GUI-Desktop muß (und sollte!) es meist explizit gesetzt werden. Umgebungsvariablen: LANGUAGE: für Statusmeldungen, z.b. LANGUAGE=en R LIBS: Pfade zu Bibliotheken mit Erweiterungspaketen, z.b. R LIBS=c:/der/pfad/zu/meinen/paketen Diese können entweder global gesetzt werden oder als Teil des Programmaufrufes. Pfade können auf allen Plattformen in Unix-Notation angegeben werden (wie in URLs). WS 2007/ WS 2007/

4 Administration von R Texteditoren Auch für den privaten PC gelten Tipp 2: Installieren Sie niemals Erweiterungspakete direkt in das versionsabhängige Installationsverzeichnis von R. Tipp 3: Verwenden Sie niemals das Installationsverzeichnis von R als Arbeitsverzeichnis. Spätestens der nächste Update von R liefert einen guten Grund. Damit Tipp 1 nicht mühsam wird, braucht man einen Editor, der R unterstützt (Syntax Markierung, Klammerpaare zählen, Einrückung, Verbindung zum R Prozess,... ). R folgt der Unix-Philosophie, daß sich jedes Werkzeug auf seine Kernaufgaben konzentrieren sollte, diese möglichst gut erledigt, und für den Rest Schnittstellen zu anderen Werkzeugen benutzt. R ist kein Texteditor. Word ist kein Texteditor. Welcher Editor für wen optimal ist, hängt stark von persönlichen Präferenzen und vom Arbeitsstil ab schwer Empfehlungen abzugeben. WS 2007/ WS 2007/ Verwaltung von R Projekten Speicherung von Objekten Speicherung von Objekten Mehrere parallele Projekte Ausdruck von Ergebnissen Weiterverwendung von Resultaten Workspace: Wenn R gestartet wird lädt es die Datei.RData, beim Beenden kann die globale Umgebung (=Workspace) in diese Datei gespeichert werden (Zwischenspeicherung mit save.image()). Dies speichert alles außer zusätzlich geladener Pakete und entspricht dem.data Verzeichnis von S-Plus. Binäre Dateien: Der save() Befehl ermöglicht das explizite Speichern von Funktionen und Daten in eine binäre Datei. Diese kann durch load() in die globale Umgebung geladen oder durch attach() in die Suchliste aufgenommen werden. Source code: Quellcode für Funktionen und die Reproduktion von Resultaten in einer Textdatei. WS 2007/ WS 2007/

5 Mehrere Projekte Es gibt zwei extreme Wege um mehrere Projekte zu verwalten: Speicherung jedes Projektes in einem anderen Arbeitsverzeichnis und Benutzung der jeweiligen.rdata Datei für alle Objekte. Expliziter Import/Export wenn Funktionen oder Daten in mehreren Projekten verwendet werden. Die.RData Datei ist primär, Befehlsgeschichte und Quellcode von Funktionen sind Dokumentation. Speicherung aller Objekte im Quellcode. Für jeden Teil der Analyse gibt es eine Datei mit den zugehörigen R Kommandos (Daten einlesen, Berechnungen, Resultate). Der Quellcode ist primär, gespeicherte Resultate ersparen nur die Arbeit der Neuberechnung. Diese Möglichkeiten bestehen sowohl bei Datenanalyse wie Programmierung. WS 2007/ Workspace ist primär Diese Methode ist besonders bei neuen Benutzern von S-Plus weit verbreitet, aber auch bei Benutzern von R unter Windows sowie Umsteigern. In R ist dieser Zugang riskanter als in S-Plus: In R wird der Workspace nur gespeichert, wenn der Benutzer dies explizit anfordert, in S-Plus automatisch. Eine fehlerhafte.rdata Datei kann mit großer Wahrscheinlichkeit gar nicht gelesen werden, S-Plus legt für jedes Objekt eine einzelne Datei an. Sinnvoll für kurzzeitige Projekte bei denen ein Verlust der Daten nicht kritisch ist, oder für extrem vorsichtige und selbstdisziplinierte Menschen. WS 2007/ Quellcode ist primär Das Projektmanagement ist viel einfacher wenn alles aus Textdateien mit dem Quellcode der Analyse reproduziert werden kann. Die üblichen Werkzeuge des Betriebssystems zur Verwaltung von Dateien stehen zur Verfügung, inklusive Backups und Zeitstempel. Editoren mit einer Verbindung zu R (Tinn-R, Emacs,... ) sind besonders hilfreich für diesen Stil der Verwendung von R. Buttons oder Tastenkombinationen senden R Kommandos aus dem Quellcode direkt an R. Tipp 4: Sehen Sie den Quellcode als primär an, verwenden Sie fix() maximal zum Debuggen. WS 2007/ Verwendung von Resultaten Das Abtippen von Ergebnissen aus R ist umständlich, kostet Zeit und ist eine potentielle Fehlerquelle. Leider unterstützt R das automatisierte Erzeugen von Berichten insbesonders unter Windows eher schlecht. Sweave erlaubt die vollständige Einbettung von R in LAT E X Dokumente, Paket xtable konvertiert manche R Objekte in LAT E X Code. Paket R2HTML kann viele R Klassen nach HTML konvertieren und hat eine HTML-Variante von Sweave. Paket odfweave hat eine OpenOffice-Variante von Sweave. Im Prinzip kann man R mittels DCOM in MS Word oder Excel einbetten... Damit beschäftigen wir uns noch im weiteren Verlauf des Kurses. WS 2007/

6 R Grundlagen Wiederholung Hilfe: help(topic)?topic help.start() Zuweisungen: x <- 5 (empf.!) x = 5 5 -> x Operatoren: +, -, *, /, ^ &, &&,, siehe help("+") Vergleiche: ==,!=, >, >=, <, <= siehe help("==") Schleifen: for, while, if Kommentare: alles nach # Namen: Groß/Kleinschreibung wichtig, beginnen mit Buchstaben; Underscore ( ) erlaubt in R (aber nicht in S) WS 2007/ Datentypen Elementare Datentypen logical: TRUE, FALSE, T, F integer: 1, 100, 326,... double: 1.0, , , NaN, Inf, -Inf complex: 1+0i, 1i, 3+5i character: "Hallo", "Wie geht s?" fehlende Werte: NA Alle elementaren Datentypen sind ausschließlich als Vektoren verfügbar (es gibt keine Skalare), jeder Vektor enthält 0 oder mehr Elemente desselben Typs, eventuell gemischt mit NA. Bemerkungen logical: T ist nicht dasselbe wie TRUE integer: Unterschied c(1,2) u. 1:2? Es gibt NAs unterschiedlicher Art! WS 2007/ Datentypen Wir unterscheiden zwischen Modus und Speichermodus eines Vektors: > mode(1:10) [1] "numeric" > storage.mode(1:10) [1] "integer" > mode(pi) [1] "numeric" > storage.mode(pi) [1] "double" > mode(true) [1] "logical" > mode("hello") [1] "character" > str(1:10) int [1:10] > str(letters) chr [1:26] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J"... WS 2007/

7 Komplexere Datentypen Konstruktion & Umwandlung Komplexere Datentypen array: Vektor mit Dimensionsattribut, Anzahl der Dimensionen ist de facto nur durch den verfügbaren Hauptspeicher beschränkt. matrix: 2-dimensionaler Array, Spezialfall um übliche Matrixoperationen (Multiplikation,... ) zu ermöglichen. factor: spezieller Vektor für kategorielle Merkmale. list: kombiniert Elemente verschiedener Typen (inkl. Listen rekursive Strukturen). data frame: Mischung aus Matrix und Liste Funktionen zum Erzeugen von Datentypen haben üblicherweise denselben Namen wie der betreffende Datentyp (ein generelles Prinzip in S), Methoden zur Konversion zwischen verschiedenen Typen haben Namen wie as.xxx(), Überprüfung des Typs erfolgt mit is.xxx(). > integer(5) > double(0) > x <- matrix(1, nrow = 5, ncol = 2) > is.matrix(x) > as.vector(x) > x <- list(a = "Hallo", b = 1:10, pi = ) WS 2007/ WS 2007/ Konstruktion & Umwandlung Konstruktion & Umwandlung Konstruktion einfacher Vektoren > c(1, 2, 7) > c("hallo", "Welt") R wandelt den Typ eines Objektes automatisch um, wenn dies notwendig und möglich ist: > TRUE + 2 [1] 3 > c("hello", sqrt(2)) [1] "Hello" " " > c(1:2, 3.14, exp((0+1i) * pi)) [1] i i i i Beispiele für häufige Konversionen (automatisch oder manuell ) sind logisch numerisch logisch, numerisch komplex logisch, numerisch, komplex Text numerisch, komplex logisch > as.numeric(rnorm(10) >= 1) [1] > as.logical(c(0, pi)) [1] FALSE TRUE WS 2007/ WS 2007/

8 Konstruktion & Umwandlung Logische Werte können in jeden anderen Modus umgewandelt werden, daher wurde die Konstante NA als eine logische Variable definiert. > mode(na) [1] "logical" In den meisten Fällen wird der Modus von NA jedoch durch die restlichen Terme eines Ausdruckes bestimmt: > 1 + NA [1] NA > str(1 + NA) num NA Unzulässige Konversionen liefern auch NA: > (num <- as.numeric(c("1", "10e2", "text"))) [1] NA > as.character(num) [1] "1" "1000" NA WS 2007/ NA, NaN und NULL Alle drei können als Darstellung von Nichts angesehen werden, allerdings ist die Ursache für das Fehlen der Information verschieden: NA: fehlende Werte in der Stichprobe, unzulässige Konversionen,... NaN: ähnlich zu NA, aber die Ursache des Fehlens ist bekannt: eine mathematische Operation liefert kein Ergebnis, z.b. weil eine Funktion außerhalb ihres Definitionsbereiches verwendet wurde (log( 1),... ). Üblicherweise begleitet von Warnung. NULL: Zeiger auf Nichts im informatischen Sinn > c(3, NA) [1] 3 NA > c(3, 0/0) [1] 3 NaN > c(3, NULL) [1] 3 WS 2007/ Unendlich Zugriff auf einzelne Elemente Die beiden speziellen Symbole Inf und -Inf können wie Zahlen in vielen mathematischen Rechenoperationen verwendet werden: > max(3, NA) [1] NA > min(3, NA) [1] NA > max(3, Inf) [1] Inf > min(3, Inf) [1] 3 > c(inf + Inf, (-Inf) * Inf, Inf - Inf) [1] Inf -Inf NaN Achtung: manche numerische Verfahren können nicht mit Unendlich rechnen und liefern Fehlermeldungen. Vektoren: durch Nummer, Name oder logischen Vektor > x <- c(5, 3, 7) > names(x) <- c("apple", "banana", "orange") > x["apple"] > x[1:2] > x[x >= 4] Arrays: wie Vektoren, Dimensionen durch Komma getrennt R> x <- matrix(1:10, ncol=2); colnames(x) = c("eins", "Zwei") R> x[1:2,] # liefert eine Matrix R> x[,"zwei"] # liefert einen Vektor R> x[,"zwei", drop=false] # liefert eine Matrix R> x[-3,] # alles außer Zeile 3 WS 2007/ WS 2007/

9 Zugriff auf einzelne Elemente Data frames Duale Betrachtungsweise eines data.frame: Listen: Dollarzeichen oder Nummer/Name R> x <- list(a="hallo", b=1:10, pi= ) R> x$a R> x[["a"]] R> x[[1]] ## erstes Element der Liste R> x[1] ## Liste mit einem Element -- Unterschied! R> x[2:3] ## Liste mit zwei Elementen R> x[[2:3]] ## FEHLER! Matrix, in der jede Spalte einen anderen Datentyp haben kann Liste, in der jedes Element dieselbe Länge haben muß Zugriff auf Elemente wie bei Matrizen oder Listen: R> iris[,"sepa1.length"] # Fehlermeldung! --> jetzt verstehen wir s\dots\dots, R> data(iris) ## (in neueren R Versionen unnötig) R> iris[1:10,] ## data frame mit 10 Zeilen R> iris[,1] ## numerischer Vektor R> iris$sepal.length ## dasselbe R> iris$sepa1.length ## Oops! was ist hier passiert??? R> iris[,"sepal.length"] # wieder die 1.Spalte R> iris[,1, drop=false] ## data frame mit einer Spalte WS 2007/ WS 2007/ Attribute Attribute Sind wie Pickerl auf einem Marmeladeglas und ermöglichen die detailliertere Beschreibung des Inhaltes. So ist z.b. ein Array nur ein Vektor mit einem Dimensionsattribut. Weitere häufige Attribute beinhalten Namen für die Zeilen oder Spalten einer Matrix, Elemente einer Liste,... > x <- matrix(1:10, ncol = 5) > x [,1] [,2] [,3] [,4] [,5] [1,] [2,] > attributes(x) $dim [1] 2 5 > rownames(x) <- c("eins", "Zwei") > x [,1] [,2] [,3] [,4] [,5] Eins Zwei > attributes(x) $dim [1] 2 5 $dimnames $dimnames[[1]] [1] "Eins" "Zwei" $dimnames[[2]] NULL WS 2007/ WS 2007/

10 Attribute Die as.xxx() Funktionen löschen alle Attribute, inklusive der Dimensionalität: > x <- matrix(1:10, nrow = 2) > x [,1] [,2] [,3] [,4] [,5] [1,] [2,] > as.character(x) [1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" > storage.mode(x) <- "character" > x [,1] [,2] [,3] [,4] [,5] [1,] "1" "3" "5" "7" "9" [2,] "2" "4" "6" "8" "10" WS 2007/

11 Grafik S, an Interactive Environment for Data Analysis and Graphics (Becker und Chambers, 1984) Fortgeschrittene Programmierung mit R Torsten Hothorn Institut für Statistik Ludwig-Maximilians-Universität München R: A Language for Data Analysis and Graphics (Ihaka und Gentleman, 1996) Diesen Titeln zufolge liegt ein Fokus der Sprache S, und daher auch von R, im Grafikbereich. Zu unterscheiden gilt es das konventionelle (base) Grafiksystem und die in Cleveland (1993) eingeführten Trellis Grafiken (in R: Lattice im gleichnamigen Paket). Traditionelle S Grafiken WS 2007/ Grafik-Devices Grafik-Devices Für die Grafikausgabe stehen eine Reihe von Geräten (Devices) zur Verfügung, die die folgenden Eigenschaften besitzen:?devices zeigt Details an und gibt Hinweise auf weitere Hilfeseiten. Die folgenden Devices gibt es in jeder Betriebsart unter jedem Betriebssystem: Man stelle sich ein Device zunächst vor wie ein Stück Papier, auf das man mit vielen Stiften und Farben malen kann, von dem aber nicht gelöscht werden kann. Mehrere Devices können gleichzeitig geöffnet sein, man kann aber nur genau in das aktive hineinmalen. Man bemerkt keinen Unterschied beim Malen, egal welches Device man benutzt. Man kann den Inhalt von einem zu einem anderen Device kopieren und aufzeichnen. postscript(): PostScript Grafiken, z.b. zum Einbinden in LAT E X Dokumente. pdf(): Portable Document Format. Z.B. zur direkten Präsentation, Verteilen an andere, oder Einbinden in PDFLAT E X Dokumente. Kann gut für die Durchsicht sehr vieler Grafiken verwendet werden. pictex(): LAT E X/PicT E X Ausgabe. bitmap(): Eine Reihe verschiedener Grafikformate, die über GhostScript generiert werden. WS 2007/ WS 2007/2008 3

12 Grafik-Devices Grafik-Devices Wenn interaktiv mit dem GUI und nicht im BATCH Modus gearbeitet wird, gibt es außerdem: X11(): Bildschirm Ausgabe. png(): komprimiertes Bitmap, verlustfrei (Kompressionsniveau steuert nur Rechenaufwand) jpeg(): komprimiertes Bitmap, Kompression mit Informationsverlust, optimiert für Photos mit vielen verschiedenen Farbschattierungen. Unter Windows, wo man auch durch Klicken im Menü Grafiken speichern kann (davon ist i.a. abzuraten): windows(): Bildschirm Ausgabe. win.metafile(): Windows Meta File, damit es auch in MS Word & Co. klappt. bmp(): Bitmap kann jeder lesen, aber enorm groß und nicht skalierbar. PNG ist in den meisten Fällen für statistische Grafiken besser (enthalten nur relativ wenige verschiedene Farben). WS 2007/ WS 2007/ Grafik-Devices Bitmap vs. Vektorgrafik Die übliche Reihenfolge zum Produzieren einer Grafik ist: Device starten, z.b. pdf( testgrafik.pdf ) Grafik erzeugen, z.b. plot(1:10) Device schließen: dev.off() Wenn man beim interaktiven Arbeiten und verfügbarem GUI (also normalerweise ) den ersten Schritt auslässt, wird als Device automatisch die Bildschirmausgabe gestartet, sonst das postscript() Device. WS 2007/ WS 2007/2008 7

13 Bitmap vs. Vektorgrafik Bitmap vs. Vektorgrafik sin(1:200/10) Index WS 2007/ WS 2007/ Bitmap vs. Vektorgrafik Bitmap vs. Vektorgrafik In der Regel sind Vektorgrafiken besser, weil sie beliebig skaliert werden können. Grafiken mit vielen Punkten/Linien können manchmal effizienter als Bitmap dargestellt werden, allerdings sollte darauf geachtet werden, daß bei der Einbettung keine Reskalierung notwendig ist. Grafiken mit vielen Punkten/Linien haben aber das Problem, daß durch das Übermalen der ersten Punkte Information verloren geht alternative Darstellung überlegen WS 2007/ WS 2007/

14 High-level Funktionen Zunächst als Wiederholung die von graphics gelieferten Standard-Grafiken. High-level Funktionen erzeugen bzw. initialisieren eine Grafik, z.b.: plot() barplot() boxplot() coplot () contour() curve() dotchart() hist() image() mosaicplot() pairs() persp() qqplot() kontextabhängig Balkendiagramm Boxplot Conditioning Plots Höhenlinienplot Funktionen plotten Dot Plots Histogramm Bilder (3. Dim. als Farbe) Mosaikplots (kateg. Daten) Streudiagramm Matrix perspektivische Flächen QQ Plot WS 2007/ High-level Funktionen Sehr viele Funktionen können auf verschiedene Objekte angewendet werden und reagieren intelligent, so dass für jedes Objekt meist eine sinnvolle Grafik erzeugt wird. Hier wird die Objektorientiertheit der Sprache S ausgenutzt. Z.B. erzeugt plot() einen Scatterplot bei Eingabe von zwei Vektoren, Residualplots bei Eingabe eines lm-objektes (lineares Modell / Regression), eine per Linie verbundene Zeitreihe bei Zeitreihenobjekten, usw. Es ist also schnell ein Streudiagramm, Histogramm, Boxplot etc. erstellt, so dass man Daten sehr schnell für Analysen anschauen kann. WS 2007/ Scatterplotmatrix Scatterplot / Regression > plot(trees) > plot(volume ~ Girth, data=trees) > tree.lm <- lm(volume ~ Girth, data = trees) > abline(tree.lm) Girth Height Volume Volume Girth WS 2007/ WS 2007/

15 Residualplot Boxplot > plot(tree.lm, which = 1) > boxplot(trees) Residuals vs Fitted Residuals Girth Height Volume Fitted values lm(volume ~ Girth) WS 2007/ WS 2007/ Histogramm Q-Q-Plot > hist(trees$volume) > qqnorm(trees$volume) > qqline(trees$volume) Histogram of trees$volume Normal Q Q Plot Frequency Sample Quantiles trees$volume Theoretical Quantiles WS 2007/ WS 2007/

16 Grafik Parameter Grafik Parameter Natürlich reicht es nicht immer, die Daten schnell anzuschauen. Grafiken müssen angepasst, d.h. z.b. mit Beschriftungen versehen werden, usw. Es eine Vielzahl von Parametern, die man an die meisten Grafikfunktionen in Form von Argumenten übergeben kann. Dazu gehören diejenigen, die in den Hilfen?plot und?plot.default aufgeführt sind, aber vor allem auch die in?par (später). In High-level Funktionen wie plot() können (neben vielen anderen) meist die folgenden Parameter gesetzt werden: axes col log main, sub pch type xlab, ylab xlim, ylim Sollen Achsen geplottet werden? Farben Logarithmierte Darstellung Überschrift und Unterschrift Symbol für einen Punkt Type (l=linie, p=punkt, b=beides, n=nichts) x-/y-achsenbeschriftung Zu plottender Bereich in x-/y- Richtung WS 2007/ WS 2007/ Grafik Parameter in par() Grafik Parameter in par() Mit par() werden die wichtigsten Voreinstellungen im Grafikbereich durchgeführt. Wegen der enormen Fülle der in?par beschriebenen Parameter, macht es für Anfänger Sinn, sich diese Hilfeseite einmal auszudrucken. Viele Einstellungen kann man ausschließlich mit par() ändern, insbesondere solche, die sich auf das gesamte Device beziehen. Jedes geöffnete Device besitzt eine unabhängige Liste von Parametern. Um die Verwirrung zu vervollständigen gibt es auch Parameter, die nur gelesen werden können, etwa die Fenstergröße. Zu den am häufigsten gebrauchten Argumenten von par(), meist 3-Buchstaben Abkürzungen, gehören: bg cex las lty, lwd mar mfcol, mfrow mfg oma usr xaxt, yaxt Hintergrundfarbe Größe eines Punktes bzw. Buchstabens Einstellung, ob Beschriftung parallel oder senkrecht zu den Achsen erfolgt Linientyp (gestrichelt,...) und Linienbreite Größe der Ränder Mehrere Plots in ein Device in Zeilen/Spalten Welcher von mehreren in einem Device angeordneten Plots angesteuert wird Größe der äußeren Ränder Aktuelle Extremwerte der User Coordinates Ob und wie x-/y-achse skaliert werden WS 2007/ WS 2007/

17 Grafik Parameter Grafik Parameter Dichte 100 N(0,1) verteilter Zufallszahlen Einige Beispiele > set.seed(123) > x <- rnorm(100) > opar <- par(bg = "lightgreen") > hist(x, freq = FALSE, col = "red", + xlim = c(-5, 5), ylim = c(0, 0.6), + main = "Dichte 100 N(0,1)-verteilter Zufallszahlen") > curve(dnorm, from = -5, to = 5, + add = TRUE, col = "blue", lwd = 3) > par(opar) Density x WS 2007/ WS 2007/ Grafik Parameter Grafik Parameter > opar <- par(mfrow = c(2, 2)) > plot(trees$girth, trees$volume, pch = 7) > boxplot(trees, col = "blue") > hist(trees$volume, las = 1) > qqnorm(trees$volume, cex.axis = 2) > par(opar) trees$volume Frequency trees$girth Histogram of trees$volume Sample Quantiles Girth Height Volume Normal Q Q Plot trees$volume Theoretical Quantiles WS 2007/ WS 2007/

18 Devices kontrollieren Multiple figures: par(mfrow=c(3,2)) par("usr")[4] margin 3 line 3 line 2 line 1 line 0 line 0 line 1 margin 3 outer margin 3 margin 3 margin 3 margin 2 plotting region margin 4 margin 2 plotting region margin 4 margin 2 plotting region margin 4 margin 2 line 4 line 3 line 2 line 1 line 0 par("usr")[1] line 0 line 1 line 2 line 3 line 4 par("pin")[2] par("usr")[2] plotting region par("pin")[1] margin 1 par("usr")[3] margin 4 outer margin 2 margin 2 margin 1 margin 3 plotting region margin 1 margin 4 margin 2 margin 1 margin 3 plotting region margin 1 outer margin 1 margin 4 margin 2 margin 1 margin 3 plotting region margin 1 margin 4 outer margin 4 WS 2007/ WS 2007/ Multiple figures: layout() Multiple figures: layout() Unregelmäßige Gitter mit mehreren Grafiken können durch die Fuktion layout() erzeugt werden. Zeilen und Spalten des Gitters können unterschiedliche Breiten haben. Benachbarte Rechtecke können zu größeren Rechtecken zusammengefaßt werden. Die Reihenfolge, in der die Rechtecke verwendet werden, kann gesteuert werden. > m=matrix(c(1,1,0,2), 2, 2) > m [,1] [,2] [1,] 1 0 [2,] 1 2 > layout(m, widths=c(1,2)) > x <- rnorm(100) > boxplot(x) > hist(x) Es können Rechtecke ausgelassen werden. WS 2007/ WS 2007/

19 Multiple figures: layout() Multiple figures: layout() Frequency Histogram of x x WS 2007/ WS 2007/ Grafik Low-level Grafik Low-level Low-level Funktionen fügen Elemente zu einer (per High-level Funktion) erzeugten Grafik hinzu, z.b. zusätzliche Punkte, Linien für Konfidenzintervalle, Beschriftungen, Legenden, etc. Sie helfen auch bei den dazu notwendigen Berechnungen. Hier sei eine Auswahl an wichtigen Low-level Funktionen gegeben: abline() arrows() axis() grid() legend() lines() mtext() points() polygon() segments() text() title() intelligente Linie Pfeile Achsen Gitternetz Legende Linien (schrittweise) Text in den Rändern Punkte (ausgefüllte) Polygone Linien (vektorwertig) Text Beschriftung WS 2007/ WS 2007/

20 Grafik Low-level Grafik Low-level Fortsetzung des Histogramm Beispiels: R> legend(-4.5, 0.55, col = c("red", "blue"), lwd = 3, + legend = c("emp. Dichte", "theor. Dichte")) Density Dichte 100 N(0,1) verteilter Zufallszahlen emp. Dichte theor. Dichte Klarerweise kann man jedes Diagramm auch zu Fuß aus seinen Einzelbestandteilen zusammenbauen: > plot.new() > plot.window(xlim=c(-3,3), ylim=c(-3,3)) > points(rnorm(50), rnorm(50)) > box() > axis(1) > axis(2) x WS 2007/ WS 2007/ Grafik Low-level Mathematische Beschriftung WS 2007/ R hat die Fähigkeit, Grafiken mit mathematischer Notation und entsprechenden Symbolen zu beschriften (Murrell und Ihaka, 2000). Gerade für Publikationen und Präsentationen muss so nicht mit diversen Programmen getrickst oder gar darauf verzichtet werden. Die Eingabe einer Formel erfolgt, wie häufig gesagt wird, in einer LAT E X-ähnlichen Form (Anlehnung an Schlüsselwörter). Für den Nicht-LAT E X-Benutzer und alle anderen: Das stimmt nicht ganz. Tatsächlich geschieht es mit Hilfe eines S Ausdrucks (S Expression), d.h. man schreibt die Formel einfach in der Sprache S. Der entsprechende S Ausdruck wird aber nicht ausgewertet, sondern direkt, z.b. mit expression() oder substitute(), übergeben und intern interpretiert. WS 2007/

21 Mathematische Beschriftung Mathematische Beschriftung Funktionen, die mit mathematischer Beschriftung umgehen können, sind: axis(), legend(), mtext(), text() und title(). Für Details empfiehlt sich dringend ein Blick auf die Hilfeseite?plotmath (auch diese ist eine derer, deren Ausdruck sich empfiehlt) und das Ausführen von demo(plotmath). Mit Hilfe von bquote() und.() können auch die Werte von Variablen in die Formeln eingebaut werden. Als Beispiel wird hier die Dichte einer N(0,1)-Verteilung gezeichnet und beschriftet: > curve(dnorm, main = "Dichte einer Normalverteilung", + from = -5, to = 5, col = "blue", lwd = 3) > text(-5, 0.3, + expression(f(x) == frac(1, sigma * sqrt(2*pi)) ~~ + e^{frac(-(x - mu)^2, 2 * sigma^2)), + adj = 0) > text(5, 0.3, expression(paste("mit ", mu == 0)), adj=1) > sigma <- 1 > text(5, 0.28, bquote(sigma ==.(sigma)), adj=1) WS 2007/ WS 2007/ Mathematische Beschriftung Grafik interaktiv dnorm (x) Dichte einer Normalverteilung 1 f(x) = e (x µ)2 2σ 2 mit µ = 0 σ 2π σ = Das Basissystem von R selbst stellt kaum Möglichkeiten für interaktive Grafiken zur Verfügung. Ausnahmen sind hier: identify() zum Identifizieren der Indizes derjenigen Datenpunkte, in deren Nähe man klickt, z.b.: > x <- rnorm(10) > plot(x) > identify(x) locator(), gibt Koordinaten aus, auf die man im Plot klickt, z.b. zum interaktiven Platzieren von Beschriftung: > legend(locator(1), legend = "Eine Legende", pch = 1) x WS 2007/ WS 2007/

22 Grafiken von Interaktionen Fortgeschrittene Programmierung mit R Torsten Hothorn Institut für Statistik Ludwig-Maximilians-Universität München In diesem Abschnitt beschäftigen wir uns mit der Darstellung der Interaktion von mehr als zwei Variablen. Zur Exploration sind oft interaktive (im Sinn von dynamisch ) Grafiken am besten geeignet. Zur Publikation auf Papier müssen aber in jedem Fall statische Grafiken erstellt werden. Analog zu Standardgrafiken: Falls Sie schnell erstellt werden können, sind auch statische Grafiken zur Exploration nützlich. Modifikationen sind jedoch meist nur mehr durch Programmierung möglich. Grafiken von Interaktionen WS 2007/ Mosaikdiagramme Bsp: Alkohol und WM 2006 Darstellung der Interaktionen zwischen 2 oder mehr kategorischen Merkmalen. Interessierende Nullhypothese: Unabhängigkeit Visualisierung über Gitterlinien und Farbe nach signierten Pearson-Residuen (Wurzel der Summanden im χ 2 -Test) Bevölkerungsrepräsentativ quotierte Umfrage der Größe n = 1008 von Anfang Juni 2006 zum Thema Fußball-WM und Alkoholgenuß: Wie schauen Sie sich die Spiele der deutschen Nationalmannschaft an? > Alkohol1 = as.table(as.matrix(read.table("alkohol1.txt"))) > Alkohol1 Maenner Frauen schaue gar nicht schaue ohne Alkohol schaue mit Alkohol keine Angabe 0 1 Quelle: innofact.com WS 2007/ WS 2007/2008 3

23 Bsp: Alkohol und WM 2006 > barplot(alkohol1, col=c("gold", "red", "black", "grey"), + beside=false, legend=true, xlim=c(0, 4)) Bsp: Alkohol und WM 2006 > barplot(alkohol1, col=c("gold", "red", "black", "grey"), + beside=true, legend=true, xlim=c(0, 12)) keine Angabe schaue mit Alkohol schaue ohne Alkohol schaue gar nicht schaue gar nicht schaue ohne Alkohol schaue mit Alkohol keine Angabe Maenner Frauen Maenner Frauen WS 2007/ WS 2007/ Bsp: Alkohol und WM 2006 > barplot(t(alkohol1), col=c("red", "black"), + beside=false, legend=true) Bsp: Alkohol und WM 2006 > barplot(t(alkohol1), col=c("red", "black"), + beside=true, legend=true) Frauen Maenner Maenner Frauen schaue gar nicht schaue ohne Alkohol schaue mit Alkohol keine Angabe schaue gar nicht schaue ohne Alkohol schaue mit Alkohol keine Angabe WS 2007/ WS 2007/2008 7

24 Balkendiagramme Je nach Typ können unterschiedliche Variablen leichter miteinander verglichen werden: Gestapelt: primäre Variable Mosaikdiagramme Flächenproportionale Darstellung der Zeilen und Spalten einer Kontingenztafel. Modifikation gestapelter Balkendiagramme: Statt Höhe codiert Breite der Balken die primäre Variable. Nebeneinander: sekundäre Variable innerhalb der Gruppen der primären Variablen Sekundäre Variable als Stapel innerhalb der Balken der primären Variablen. In jedem Fall gibt es eine Asymmetrie zwischen den beiden Variablen. Asymmetrie zwischen Variablen weniger stark als bei Balkendiagrammen, kann auch für höherdimensionale Tafeln verwendet werden. WS 2007/ WS 2007/ Bsp: Alkohol und WM Bsp: Alkohol und WM 1.1 schaue gar nicht schaue ohne Alkohol schaue mit Alkohol keine Angabe 100% WS 2007/ WS 2007/

25 Bsp: Alkohol und WM Bsp: Alkohol und WM schaue gar nicht schaue ohne Alkohol schaue mit Alkohol keine Angabe schaue gar nicht schaue ohne Alkohol schaue mit Alkohol keine Angabe Frauen Frauen Maenner Maenner WS 2007/ WS 2007/ Bsp: Alkohol und WM Bsp: UCB Admissions Maenner Frauen schaue gar nicht schaue ohne Alkohol schaue mit Alkohol keine Angabe Standardized Residuals: < 4 4: 2 2:0 0:2 2:4 >4 Zulassung von Studenten zur Graduate School der Universität Berkeley 1973 für die 6 größten Fakultäten: > ftable(admit~gender, data=ucbadmissions) Admit Admitted Rejected Gender Male Female WS 2007/ WS 2007/

26 Bsp: UCB Admissions Bsp: UCB Admissions > mosaicplot(~gender+admit, data=ucbadmissions, main="", shade=true) Admit Admitted Rejected Male Female Standardized Residuals: < 4 4: 2 2:0 0:2 2:4 >4 > ftable(admit~gender+dept, data=ucbadmissions) Admit Admitted Rejected Gender Dept Male A B C D E F Female A B 17 8 C D E F Gender WS 2007/ WS 2007/ Bsp: UCB Admissions Bsp: UCB Admissions > mosaicplot(~gender+admit+dept, data=ucbadmissions, main="", shade=true) > mosaicplot(~admit+dept, data=ucbadmissions, main="", shade=true) Male Female A B C D E F A B C D E F Admitted Rejected Rejected Standardized Residuals: F E D Standardized Residuals: Admit Admitted < 4 4: 2 2:0 0:2 2:4 >4 Dept B A C < 4 4: 2 2:0 0:2 2:4 >4 Gender Admit WS 2007/ WS 2007/

27 Bsp: UCB Admissions Trellis Grafiken > mosaicplot(~gender+dept, data=ucbadmissions, main="", shade=true) Dept F E D C B A Male Female Standardized Residuals: < 4 4: 2 2:0 0:2 2:4 >4 Grafiken basieren auf den Grundprinzipien menschlicher Perzeption. Alle Einstellungen haben vernünftige Defaults. Alles ist möglich (gegeben ausreichend viele Argumente) Gender WS 2007/ WS 2007/ Trellis Grafiken Trellis Grafiken Hier eine Liste von häufig verwendeten Trellis Funktionen: barchart() bwplot() cloud() densityplot() dotplot() histogram() levelplot() panel...() piechart() print.trellis() qq() wireframe() xyplot() Balkendiagramm Boxplot 3D Punktewolken Dichten Punkteplots Histogramm Levelplots Funktionen zum Hinzufügen von Elementen Kuchendiagramm Trellis Objekt plotten QQ Plots persp. 3D Flächen Scatterplot WS 2007/ WS 2007/

28 Unterschiede? Trellis / Lattice / Grid 800 Trellis (Cleveland, 1993) ist die Originalimplementierung für S und S-Plus, lattice (Sarkar, 2002) eine Neuimplementierung für R (mit neuen Features). pressure temperature pressure temperature Das Paket lattice basiert auf dem Grafiksystem im Paket grid (Murrell, 2001). Beide Pakete sind in einer Standard R Installation enthalten. Grid Grafiken und Standard R Grafiken sind i.a. inkompatibel. Die Wörter trellis, lattice und grid lassen sich alle mit Gitter übersetzen. WS 2007/ WS 2007/ Trellis / Lattice Trellis / Lattice Anders als bei den Standard Grafiken wird vor der Grafikerstellung ein Objekt der Klasse trellis generiert und bearbeitet. Erst wenn alle Elemente enthalten sind wird es mit print() (bzw. der entsprechenden Methode print.trellis()) gezeichnet. Gerade im nicht-interaktiven Modus muss man unbedingt an das print() denken, da sonst keine Grafik erzeugt wird. Das Interface zu Trellis Grafikfunktionen ist so angelegt, dass die Daten als Formel (mit ~ ) eingegeben werden, um die Abhängigkeitsstruktur in den Daten für die Anordnung der nebeneinanderliegenden Plots ausdrücken zu können. Es ist ein Grundproblem der Standard-Grafik allgemein Grafiken innerhalb einer Grafik zu realisieren: layout() oder das simple par(mfrow=.) können nicht geschachtelt, d.h. mehrstufig verwendet werden, so dass z.b. unmöglich ist, mehrere filled.contour(), coplot() oder pairs() Grafiken zu einer neuen Grafik zusammenzustellen. Auch die scheinbar sehr flexible Verwendung von par() stößt an Grenzen oder wird hässlich, nicht umsonst enthält der Source-code von par.c den Kommentar The horror, the horror..., Marlon Brando in Apocalypse Now WS 2007/ WS 2007/

29 Beispiel: Prestige Daten Grafische Parameter > library("lattice") > data(prestige, package="car") > attach(prestige) The following object(s) are masked from package:datasets : women > xyplot(income~education) > xyplot(prestige~income) > xyplot(prestige~income, type=c("p","r")) > xyplot(prestige~income, type=c("p","r","smooth")) > xyplot(prestige~income type, type=c("p","smooth")) > xyplot(prestige~income, type=c("p","smooth"), + subset=type=="wc", pch=16, col="red") Auch bei Trellis Grafiken können viele Aspekte der Grafik vom Benutzer durch Argumente der High-Level-Funktionen verändert werden. Zusätzlich hat Lattice aber mehrere Listen globaler Einstellungen, sogenannte Themen. Die derzeit aktive Liste kann über trellis.par.get() und trellis.par.set() gelesen und verändert werden. show.settings liefert einen grafischen Überblick. WS 2007/ WS 2007/ Grafische Parameter S Formeln > show.settings() > unlist(trellis.par.get("plot.symbol")) alpha cex col font pch "1" "0.8" "#000000" "1" "1" fill "transparent" > trellis.par.set(plot.symbol=list(pch=16, col="red")) > show.settings() > trellis.par.set(canonical.theme()) > show.settings() > trellis.par.set(canonical.theme(color=false)) > show.settings() > trellis.par.set(col.whitebg()) > show.settings() > ## persoenlicher Default: > options(lattice.theme = "col.whitebg") WS 2007/ Die meisten high-level Grafikfuntionen in R erlauben die Spezifikation der Variablen durch Formeln (analog zu Modellen). Bei Trellis ist dies meist sogar der einzige Weg. Die allgemeine Form einer Formel ist y ~ x g1 + g wobei y auf die vertikale Achse aufgetragen wird, x auf die horizontale Achste, und g1, g2 etc eine oder mehrere optionale Gruppierungsvariablen darstellen. In einigen Spezialfällen wie Histogrammen wird nur eine Variable benutzt, in diesen Fällen wird die linke Seite der Formel leer gelassen. WS 2007/

30 Gruppierungsvariablen Gruppierungsvariablen Die Gruppierungsvariablen müssen kategorisch sein. Nominale und ordinale Variablen können direkt verwendet werden, numerische Variablen müssen meisten zuerst konvertiert werden (Ausnahme: diskret, wenige Ausprägungen). Am einfachsten erfolgt dies durch Klassierung: > edu.cut <- cut(education, 4) > summary(edu.cut) (6.37,8.77] (8.77,11.2] (11.2,13.6] (13.6,16] > xyplot(prestige~income edu.cut) > edu.cut <- cut(education, quantile(education, seq(0, 1, by=0.25))) > summary(edu.cut) (6.38,8.45] (8.45,10.5] (10.5,12.6] (12.6,16] NA s > xyplot(prestige~income edu.cut) Besser ist die Verwendung sogenannter shingles : Die Basis ist wieder ein Faktor, der durch Klassierung einer numerischen Variablen entsteht. Um die Punkte in jedem Panel nicht zu klein werden zu lassen, können sich die Intervalle jedoch überschneiden. Zusätzlich wird auch Metainformation gespeichert. > edu.shin <- equal.count(prestige$education, 4) > xyplot(prestige~income edu.shin) WS 2007/ WS 2007/ Gruppierungsvariablen Andere Trellis-Grafiken Zusätzliche Gruppierungsvariablen können auf 2 Arten eingesetzt werden: Eine Variable kann über Farben und Symbole direkt in jedes Panel aufgenommen werden (mit Legende über Argument auto.key. Beliebig viele weitere Variablen über mehr Panels > densityplot(~women type) > densityplot(~income type+equal.count(education, 2)) > bwplot(income~type equal.count(education, 2)) > cloud(prestige~income*education) > cloud(prestige~income*education type) > xyplot(prestige~income, group=type, auto.key=true) > xyplot(prestige~income, group=type, + auto.key=list(columns=3)) > xyplot(prestige~income edu.shin, group=type, auto.key=true) > xyplot(prestige~income edu.shin+type) > xyplot(prestige~income type+edu.shin) WS 2007/ WS 2007/

31 Panel-Funktionen Layout Jede Trellis High-Level-Funktion benutzt Panel-Funktionen, um die Einzelgrafiken zu erzeugen. Modifikation der Gesamtgrafiken erfolgt (neben den Standardargumenten) durch Schreiben neuer Panel-Funktionen: > meinpanel <- function(x, y,...){ + panel.grid(h=4, v=4, col="lightblue") + panel.xyplot(x, y,...) + panel.loess(x, y,...) + ltext(25000, 20, adj=1, + label=paste(length(x), "Punkte")) + > xyplot(prestige~income type, panel=meinpanel) Bausteine: Funktionen panel.*, llines, lpoints, ltext,... Das Layout von Trellis-Grafiken (wieviele Zeilen und Spalten) orientiert sich per Default an der Größe der Ziel-Device, kann jedoch durch die Argumente table, layout und skip verändert werden: > ## Kommando für verschiedene Fenstergrößen testen: > xyplot(prestige~income type, panel=meinpanel) > xyplot(prestige~income type, panel=meinpanel, as.table=true) > xyplot(prestige~income type, panel=meinpanel, layout=c(1,4)) > xyplot(prestige~income type, panel=meinpanel, as.table=true, + layout=c(3,2), skip=c(f, T, F, T, F, T)) WS 2007/ WS 2007/

32 Funktionen Obwohl S-Plus und R bereits in der Standardinstallation extrem mächtige Werkzeuge zur Datenanalyse darstellen, wollen die meisten Benutzer nach einiger Zeit dieses Werkzeug ihren eigenen Bedürfnissen anpassen. Fortgeschrittene Programmierung mit R Einer der größten Vorteile von S ist, daß jeder Benutzer das System leicht um eigene Funktionen erweitern oder bestehende Funktionen modifizieren kann. Friedrich Leisch Institut für Statistik Ludwig-Maximilians-Universität München Funktionen, Flußkontrolle & Fehlerbehandlung Der größte Teil von R selber ist in der Sprache S geschrieben. S ist eine vollwertige Programmiersprache in deren Design die Notwendigkeiten der statistischen Datenanalyse mit einbezogen wurden, es ist nicht nur eine Sprache zur Datenanalyse. c 2007 Friedrich Leisch 1 Formale Definition Funktionen aufrufen function ( ARGLIST ) KÖRPER Das Schlüsselwort function markiert den Beginn einer Funktionsdefinition. Die Argumente der Funktion werden durch eine mit Kommas getrennte Liste von Ausdrücken der Form SYMBOL = AUSDRUCK oder durch das spezielle formale Argument... angegeben. Jeder gültige R Ausdruck kann als KÖRPER der Funktion verwendet werden, zumeist ist es ein durch geschwungene Klammern gruppierter Block von Anweisungen. In den meisten Fällen werden Funktionen Symbolen zugewiesen ( bekommen einen Namen ), aber auch anonyme Funktionen sind an gewissen Stellen sehr praktisch (apply(),... ). c 2007 Friedrich Leisch 2 moment <- function(x, n=2) { sum(x^n)/length(x) Funktionen retournieren nur eine einziges Objekt: den Wert des letzten Ausdruckes oder das Argument von return(). In der Praxis ist dies nicht allzu restriktiv, da das zurückgelieferte Objekt eine beliebig komplexe Liste sein kann. Benannte Argumente: Wenn eine Funktion aufgerufen wird, müssen die Argumente nicht in derselben Reihenfolge wie in der Funktionsdefinition angegeben werden, sondern können auch direkt mit Namen angesprochen werden, z.b. moment(n=3, x=myx). Argumente mit Defaultwerten müssen beim Aufruf nicht spezifiziert werden, z.b. moment(myx). Defaultwerte können Funktionen anderer Argumente sein. c 2007 Friedrich Leisch 3

33 Das... Argument Funktionen können beliebig viele unspezifizierte Argumente besitzen, falls die Argumentliste das spezielle Argument... enthält, z.b. max(..., na.rm = FALSE). Eine zweite Verwendungsmöglichkeit ist das Weiterleiten von Argumenten an eine andere Funktion: myplotfun <- function(x, y, myarg,...) { ## optionale Berechnungen mit x, y und myarg ## Aufruf Standard Plot Funktion plot(x, y,...) Damit versteht myplot() zusätzlich zu seinen eigenen Argumenten implizit auch alle Argumente von plot() ohne weiteren Programmieraufwand. x <- list(...) im Körper einer Funktion konvertiert alle unspezifizierten Argumente in eine benannte Liste. c 2007 Friedrich Leisch 4 Das... Argument Das... Argument kann zwar an beliebig viele Funktionen weitergeben werden, jedoch bekommen diese dann alle dieselbe Argumentliste. Um mehreren Funktionen verschiedene Argumentlisten zu übergeben, empfiehlt es sich, diese als benannte Listen zu spezifizieren und die Funktionen mittels do.call() aufzurufen: myfun <- function(x, fun2.args=null, fun3.args=null,...) { ## Berechnungen (eventuell mit fun2.args etc.) fun1(x,...) do.call(fun2, fun2.args) do.call("fun3", fun3.args) ## weitere Berechnungen R> myfun(x, fun2.args=list(arg1=wert)) # erstes Arg entweder Funktion # oder Zeichenkette c 2007 Friedrich Leisch 5 Argumente zusammenfügen Wenn eine Funktion aufgerufen wird, werden die tatsächlichen Argumente des Funktionsaufrufen mit den formalen Argumenten der Funktionsdefinition in der folgenden Reihenfolge zusammengefügt: 1. alle benannten Argumente deren Namen dem eines formalen Argumentes exakt entspricht 2. wenn kein... Argument definiert wurde genügt eine eindeutige Übereinstimmung am Beginn des Namens 3. Position in der Argumentliste 4. Verbleibende tatsächliche Argumente werden Teil von... (falls definiert). Anmerkung: Nicht alle formalen Argumente müssen auch durch tatsächliche Argumente abgedeckt werden. c 2007 Friedrich Leisch 6 Zuweisungsoperatoren: <- und = Außerhalb von Funktionsaufrufen haben die beiden dieselbe Bedeutung: > x <- 42; x [1] 42 > x = 42; x [1] 42 Innerhalb eines Funtionsaufrufes verhält sich <- wie immer (Zuweisung von Wert an Symbol), während = den Wert einem benannten Argument zuweist: > sin(x = 3) [1] > x [1] 42 > sin(x <- 3) [1] > x [1] 3 c 2007 Friedrich Leisch 7

34 Lazy Evaluation Flußkontrolle Beim Aufruf einer Funktion werden die Argumente nur geparsed, aber nicht evaluiert. Die Auswertung des Argumentes erfolgt erst, wenn das Argument zum ersten Mal verwendet wird: > myfun <- function(x, y){ + if(x < 0) + return(nan) + else + return( y * log(x)) + > myfun(-1) [1] NaN > myfun(2,3) [1] > myfun(2) Error in myfun(2) : Argument "y" is missing, with no default Als vollwertige Programmiersprache besitzt S eine Reihe von Strukturen zur Kontrolle des Programmflusses. Iterationen werden durch die Befehle for, while und repeat zur Verfügung gestellt. Für bedingte Auswertungen können if, else, ifelse() und switch() verwendet werden. for und if sind von diesem die bei weitem am häufigsten verwendeten. c 2007 Friedrich Leisch 8 c 2007 Friedrich Leisch 9 Der if Befehl if: Beispiele if else Konstrukte haben die Form if( Test ) { Anweisungsblock 1 else { Anweisungsblock 2 Wenn der Test den Wert TRUE liefert, wird Anweisungsblock 1 ausgeführt, sonst Anweisungsblock 2. Der else-teil ist optional. Ein typisches Beispiel für die Verwendung von if: if (any(x < 0)){ stop("negative Werte in x") Auswahl zwischen mehreren Möglichkeiten:: if (all(x >= 0)) sqrt(x) else sqrt(x + 0i) c 2007 Friedrich Leisch 10 c 2007 Friedrich Leisch 11

35 if: Beispiele Der for Befehl Verschachtelte if Befehle: if (x <= 0){ return(0) else if( x>0 && x<=1){ return(x) else { return(1) (eher sinnloses Beispiel da nicht vektorisiert) for Konstrukte haben die Form for(var in vector) { Schleife In jedem Iterationsschritt wird die Variable var der Reihe nach auf jeweils das nächste Element des Vektors vector gesetzt und dann die Schleife durchlaufen. Dies sieht ähnlich wie die entsprechenden Konstrukte von Sprachen wie C oder C++ aus, ist aber syntaktisch näher am foreach Befehl der Sprache Perl. c 2007 Friedrich Leisch 12 c 2007 Friedrich Leisch 13 for: Beispiele Der while Befehl while Konstrukte haben die Form Summation der Elemente eines Vektors im Stil von C: summe <- 0 for(i in 1:length(x)) { summe <- summe + x[i] Summation der Elemente eines Vektors im Stil von Perl: summe <- 0 for(elt in x) { summe <- summe + elt Die zweite Variante ist effizienter. Statt 1:length(x) verwendet man besser seq_along(x). c 2007 Friedrich Leisch 14 while( Test ) { Schleife Die Schleife wird immer wieder durchlaufen, bis der Test zum ersten Mal FALSE liefert. Beispiel: Summation bis zum ersten fehlenden Wert summe <- 0 i <- 1 while((i <= length(x)) &&!is.na(x[i])){ summe <- summe + x[i] i <- i+1 c 2007 Friedrich Leisch 15

36 next und break Funktionen sind Objekte next Springt zum Beginn der nächsten Iteration einer for oder while Schleife. break Beendet eine for oder while Iteration vorzeitig. Beispiel: Summation bis zum ersten fehlenden Wert summe <- 0 i <- 1 while(i <= length(x)){ if(is.na(x[i])) break summe <- summe + x[i] i <- i+1 Funktionen sind in S sogenannte Objekte erster Klasse und können wie Daten behandelt werden, insbesonders können Funktionen direkt als Argumente anderer Funktionen verwendet werden, Funktionen als Rückgabewert liefern, in R selber in ihre Bestandteile zerlegt werden. c 2007 Friedrich Leisch 16 c 2007 Friedrich Leisch 17 Funktionen sind Objekte > apply(trees, 2, FUN=median) > f <- approxfun(x=1:10, y=sin(1:10)) > f(3) [1] > g <- function(x) x+3 > g(5) [1] 8 > body(g) x + 3 > body(g)[[3]] [1] 3 > body(g)[[3]] <- 10 > g(5) [1] 15 Funktionale Folgende Funktionen sind hilfreich beim rechnen auf/mit Funktionen: args(), body(): Argumente und Köper einer Funktion. match.call(): Liefert innerhalb einer Funktion den exakten Aufruf dieser Funktion (siehe nächste VO). substitute(): Unterbindet die Evaluation eines Argumentes und liefert stattdessen den Ausdruck auf der rechten Seite beim Funktionsaufruf. deparse(): Wandelt einen Ausdruck in eine Zeichenkette um. > meinplot <- function(x, main=deparse(substitute(x)),...) + plot(x, main=main,...) > meinplot(trees) c 2007 Friedrich Leisch 18 c 2007 Friedrich Leisch 19

37 Exception Handling stop(msg) beendet normalerweise die Berechnung der aktuellen Anweisung, schreibt das message Argument in die Konsole und kehrt zur Eingabeauffforderung zurück. warning(msg) speichert normalerweise das message Argument in einer Liste von Warnungen und schreibt alle Warnungen gemeinsam in die Konsole, nachdem der oberste Funktionsaufruf beendet wurde. try(anweisung) Auch wenn die Anweisung zu einem Aufruf von stop führt, kehrt R nicht zur Eingabeaufforderung zurück, sondern try() liefert statt dessen ein Objekt der Klasse "try-error". on.exit(anweisung) erlaubt die Definition von Aufräumcode der auch im Falle eines Fehlers exekutiert werden soll, bevor die Funktion beendet wird. Das genaue Verhalten von error und warning hängt von mehreren options() ab und kann zur Laufzeit verändert werden. c 2007 Friedrich Leisch 20 Exception Handling foo <- function(x){ s <- sum(x) cat("die Summe ist:", s, "\n") R> foo(1:10) Die Summe ist: 55 R> foo("hallo") Error in sum(..., na.rm = na.rm) : invalid "mode" of argument c 2007 Friedrich Leisch 21 Exception Handling Exception Handling foo <- function(x){ if(! is.numeric(x)) stop("kann nur numerische Variablen summieren!") s <- sum(x) cat("die Summe ist:", s, "\n") R> foo(1:10) Die Summe ist: 55 R> foo("hallo") Error in foo("hallo") : Kann nur numerische Variablen summieren! foo <- function(x, silent=false){ s <- try(sum(x), silent=silent) if(inherits(s, "try-error")){ warning("x hat falschen Typ, Berechnung liefert NA") return(na) s R> foo(1:10) [1] 55 R> foo("hallo") Error in sum(..., na.rm = na.rm) : invalid "mode" of argument [1] NA Warning message: x hat falschen Typ, Berechnung liefert NA in: foo("hallo") R> foo("hallo", TRUE) [1] NA Warning message: x hat falschen Typ, Berechnung liefert NA in: foo("hallo", TRUE) c 2007 Friedrich Leisch 22 c 2007 Friedrich Leisch 23

Statistik und Computer Statistische Software (R) Paul Fink, M.Sc. Formeln und Code Was ist Statistiksoftware?

Statistik und Computer Statistische Software (R) Paul Fink, M.Sc. Formeln und Code Was ist Statistiksoftware? Statistik und Computer Efron (2001): Statistik im 20. Jahrhundert Statistische Software (R) Paul Fink, M.Sc. Institut für Statistik Ludwig-Maximilians-Universität München Einführung Applications 1900 Theory?

Mehr

Statistische Software (R-Vertiefung) Kontrollstrukturen: Bedingte Anweisungen. Logische Operatoren & Verknüpfungen. Syntax. Paul Fink, M.Sc.

Statistische Software (R-Vertiefung) Kontrollstrukturen: Bedingte Anweisungen. Logische Operatoren & Verknüpfungen. Syntax. Paul Fink, M.Sc. Kontrollstrukturen: Bedingte Anweisungen Statistische Software (R-Vertiefung) if ( Bedingung ) { Ausdruck 1 } else { Ausdruck 2} Paul Fink, M.Sc. Institut für Statistik Ludwig-Maximilians-Universität München

Mehr

Dokumentation. estat Version 2.0

Dokumentation. estat Version 2.0 Dokumentation estat Version 2.0 Installation Die Datei estat.xla in beliebiges Verzeichnis speichern. Im Menü Extras AddIns... Durchsuchen die Datei estat.xla auswählen. Danach das Auswahlhäkchen beim

Mehr

Erwin Grüner 09.02.2006

Erwin Grüner 09.02.2006 FB Psychologie Uni Marburg 09.02.2006 Themenübersicht Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife

Mehr

Python Installation. 1 Vorbereitung. 1.1 Download. Diese Anleitung ist für Windows ausgelegt.

Python Installation. 1 Vorbereitung. 1.1 Download. Diese Anleitung ist für Windows ausgelegt. Python Installation 1 Vorbereitung Diese Anleitung ist für Windows ausgelegt. 1.1 Download Python kann online unter https://www.python.org/downloads/ heruntergeladen werden. Hinweis: Im CoderDojo verwenden

Mehr

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: VBA Programmierung mit Excel Schleifen 1/6 Erweiterung der Aufgabe Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen: Es müssen also 11 (B L) x 35 = 385 Zellen berücksichtigt

Mehr

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg. Klausur Informatik Programmierung, 17.09.2012 Seite 1 von 8 Klausurteilnehmer Name: Matrikelnummer: Wichtige Hinweise Es sind keinerlei Hilfsmittel zugelassen auch keine Taschenrechner! Die Klausur dauert

Mehr

Die R-Homepage R herunterladen

Die R-Homepage R herunterladen Die R-Homepage R herunterladen Der Link für die R-Homepage lautet: http://www.r-project.org/ Um R herunterzuladen, klickt man zunächst auf download R (durch grünen Pfeil gekennzeichnet). Anschließend öffnet

Mehr

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...

Mehr

Running R. Windows Aus Menü. Lese R Code ein führt den Code auch gleich aus, eventuell muss vorher das Verzeichnis gewechselt werden.

Running R. Windows Aus Menü. Lese R Code ein führt den Code auch gleich aus, eventuell muss vorher das Verzeichnis gewechselt werden. Einführung 1 / 1 Einführung 2/1 Running R Windows Aus Menü Linux Lese R Code ein führt den Code auch gleich aus, eventuell muss vorher das Verzeichnis gewechselt werden. Auf der Konsole/Eingabeaufforderung:

Mehr

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

Kurzanleitung. Toolbox. T_xls_Import

Kurzanleitung. Toolbox. T_xls_Import Kurzanleitung Toolbox T_xls_Import März 2007 UP GmbH Anleitung_T_xls_Import_1-0-5.doc Seite 1 Toolbox T_xls_Import Inhaltsverzeichnis Einleitung...2 Software Installation...2 Software Starten...3 Das Excel-Format...4

Mehr

Statistische Software (R)

Statistische Software (R) Statistische Software (R) Paul Fink, M.Sc., Eva Endres, M.Sc. Institut für Statistik Ludwig-Maximilians-Universität München Einführung Statistik und Computer Nach Efron (2003): Statistik im 20. Jahrhundert

Mehr

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Seite erstellen Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Es öffnet sich die Eingabe Seite um eine neue Seite zu erstellen. Seiten Titel festlegen Den neuen

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein. Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt

Mehr

OP-LOG www.op-log.de

OP-LOG www.op-log.de Verwendung von Microsoft SQL Server, Seite 1/18 OP-LOG www.op-log.de Anleitung: Verwendung von Microsoft SQL Server 2005 Stand Mai 2010 1 Ich-lese-keine-Anleitungen 'Verwendung von Microsoft SQL Server

Mehr

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware Datenübernahme von HKO 5.9 zur Advolux Kanzleisoftware Die Datenübernahme (DÜ) von HKO 5.9 zu Advolux Kanzleisoftware ist aufgrund der von Update zu Update veränderten Datenbank (DB)-Strukturen in HKO

Mehr

Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen

Übungen 19.01.2012 Programmieren 1 Felix Rohrer. Übungen Übungen if / else / else if... 2... 2 Aufgabe 2:... 2 Aufgabe 3:... 2 Aufgabe 4:... 2 Aufgabe 5:... 2 Aufgabe 6:... 2 Aufgabe 7:... 3 Aufgabe 8:... 3 Aufgabe 9:... 3 Aufgabe 10:... 3 switch... 4... 4 Aufgabe

Mehr

KURZANLEITUNG CLOUD OBJECT STORAGE

KURZANLEITUNG CLOUD OBJECT STORAGE KURZANLEITUNG CLOUD OBJECT STORAGE Version 1.12 01.07.2014 SEITE _ 2 INHALTSVERZEICHNIS 1. Einleitung... Seite 03 2. Anmelden am Cloud&Heat Dashboard... Seite 04 3. Anlegen eines Containers... Seite 05

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

1 Einleitung. Lernziele. Symbolleiste für den Schnellzugriff anpassen. Notizenseiten drucken. eine Präsentation abwärtskompatibel speichern

1 Einleitung. Lernziele. Symbolleiste für den Schnellzugriff anpassen. Notizenseiten drucken. eine Präsentation abwärtskompatibel speichern 1 Einleitung Lernziele Symbolleiste für den Schnellzugriff anpassen Notizenseiten drucken eine Präsentation abwärtskompatibel speichern eine Präsentation auf CD oder USB-Stick speichern Lerndauer 4 Minuten

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

Mehr

Mediator 9 - Lernprogramm

Mediator 9 - Lernprogramm Mediator 9 - Lernprogramm Ein Lernprogramm mit Mediator erstellen Mediator 9 bietet viele Möglichkeiten, CBT-Module (Computer Based Training = Computerunterstütztes Lernen) zu erstellen, z. B. Drag & Drop

Mehr

Erstellen von x-y-diagrammen in OpenOffice.calc

Erstellen von x-y-diagrammen in OpenOffice.calc Erstellen von x-y-diagrammen in OpenOffice.calc In dieser kleinen Anleitung geht es nur darum, aus einer bestehenden Tabelle ein x-y-diagramm zu erzeugen. D.h. es müssen in der Tabelle mindestens zwei

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte

Mehr

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

Grundlagen C R ash-kurs

Grundlagen C R ash-kurs Grundlagen C R ash-kurs Torsten Hothorn Institut für Statistik Was ist S? Was ist R? S ist eine Sprache für Datenanalyse und Graphik, entwickelt von John Chambers und Kollegen in den Bell Laboratories

Mehr

R-Tutorial. R bietet zahlreiche Hilfe-Funktionen an. Informiere Dich über die Funktion log():

R-Tutorial. R bietet zahlreiche Hilfe-Funktionen an. Informiere Dich über die Funktion log(): Statistik für Bioinformatiker SoSe 2005 R-Tutorial Aufgabe 1: Hilfe. Logge Dich ein. Username und Passwort stehen auf dem Aufkleber am jeweiligen Bildschirm. Öffne eine Shell und starte R mit dem Befehl

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

Mehr

2. Word-Dokumente verwalten

2. Word-Dokumente verwalten 2. Word-Dokumente verwalten In dieser Lektion lernen Sie... Word-Dokumente speichern und öffnen Neue Dokumente erstellen Dateiformate Was Sie für diese Lektion wissen sollten: Die Arbeitsumgebung von Word

Mehr

Praktische Mathematik: Lineare und Netzwerk-Optimierung (SS 2015) Praktikumsaufgaben

Praktische Mathematik: Lineare und Netzwerk-Optimierung (SS 2015) Praktikumsaufgaben Technische Universität Kaiserslautern Prof Dr Sven O Krumke Dr Sabine Büttner MSc Marco Natale Praktische Mathematik: Lineare und Netzwerk-Optimierung (SS 2015) Praktikumsaufgaben Aufgabe 1 (Konvertieren

Mehr

32.4 Anpassen von Menüs und Symbolleisten 795i

32.4 Anpassen von Menüs und Symbolleisten 795i 32.4 Anpassen von Menüs und Symbolleisten 795i Fortsetzung der Seiten in der 8. Auflage 32.4 Anpassen von Menüs und Symbolleisten 32.4.1 Anpassen von Menüs Die Menüs können um folgende Typen von Optionen

Mehr

Einführung in PHP. (mit Aufgaben)

Einführung in PHP. (mit Aufgaben) Einführung in PHP (mit Aufgaben) Dynamische Inhalte mit PHP? 2 Aus der Wikipedia (verkürzt): PHP wird auf etwa 244 Millionen Websites eingesetzt (Stand: Januar 2013) und wird auf etwa 80 % aller Websites

Mehr

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze Ihre Interessentendatensätze bei inobroker Wenn Sie oder Ihre Kunden die Prozesse von inobroker nutzen, werden Interessentendatensätze erzeugt. Diese können Sie direkt über inobroker bearbeiten oder mit

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 von Markus Mack Stand: Samstag, 17. April 2004 Inhaltsverzeichnis 1. Systemvorraussetzungen...3 2. Installation und Start...3 3. Anpassen der Tabelle...3

Mehr

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem Fachbericht zum Thema: Anforderungen an ein Datenbanksystem von André Franken 1 Inhaltsverzeichnis 1 Inhaltsverzeichnis 1 2 Einführung 2 2.1 Gründe für den Einsatz von DB-Systemen 2 2.2 Definition: Datenbank

Mehr

R ist freie Software und kann von der Website. www.r-project.org

R ist freie Software und kann von der Website. www.r-project.org R R ist freie Software und kann von der Website heruntergeladen werden. www.r-project.org Nach dem Herunterladen und der Installation von R kann man R durch Doppelklicken auf das R-Symbol starten. R wird

Mehr

Excel Pivot-Tabellen 2010 effektiv

Excel Pivot-Tabellen 2010 effektiv 7.2 Berechnete Felder Falls in der Datenquelle die Zahlen nicht in der Form vorliegen wie Sie diese benötigen, können Sie die gewünschten Ergebnisse mit Formeln berechnen. Dazu erzeugen Sie ein berechnetes

Mehr

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten In dem Virtuellen Seminarordner werden für die Teilnehmerinnen und Teilnehmer des Seminars alle für das Seminar wichtigen Informationen,

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {

Mehr

Artikel Schnittstelle über CSV

Artikel Schnittstelle über CSV Artikel Schnittstelle über CSV Sie können Artikeldaten aus Ihrem EDV System in das NCFOX importieren, dies geschieht durch eine CSV Schnittstelle. Dies hat mehrere Vorteile: Zeitersparnis, die Karteikarte

Mehr

MetaQuotes Empfehlungen zum Gebrauch von

MetaQuotes Empfehlungen zum Gebrauch von MetaQuotes Empfehlungen zum Gebrauch von MetaTrader 4 auf Mac OS Auch wenn viele kommerzielle Angebote im Internet existieren, so hat sich MetaQuotes, der Entwickler von MetaTrader 4, dazu entschieden

Mehr

1 Dokumentenmanagement

1 Dokumentenmanagement 1 Dokumentenmanagement Das Dokumentenmanagement des GV Büro-System ist ein äußerst leistungsfähiges und mächtiges Tool. Es ist in der Lage, nahezu sämtliche Arten von Dokumenten auf einfache Art und Weise

Mehr

SANDBOXIE konfigurieren

SANDBOXIE konfigurieren SANDBOXIE konfigurieren für Webbrowser und E-Mail-Programme Dies ist eine kurze Anleitung für die grundlegenden folgender Programme: Webbrowser: Internet Explorer, Mozilla Firefox und Opera E-Mail-Programme:

Mehr

Speichern. Speichern unter

Speichern. Speichern unter Speichern Speichern unter Speichern Auf einem PC wird ständig gespeichert. Von der Festplatte in den Arbeitspeicher und zurück Beim Download Beim Kopieren Beim Aufruf eines Programms Beim Löschen Beim

Mehr

Erstellen einer PostScript-Datei unter Windows XP

Erstellen einer PostScript-Datei unter Windows XP Erstellen einer PostScript-Datei unter Windows XP Sie möchten uns Ihre Druckvorlage als PostScript-Datei einreichen. Um Fehler in der Herstellung von vorneherein auszuschließen, möchten wir Sie bitten,

Mehr

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit, Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit, Wie kann ein PDF File angezeigt werden? kann mit Acrobat-Viewern angezeigt werden auf jeder Plattform!! (Unix,

Mehr

Tipps und Tricks zu den Updates

Tipps und Tricks zu den Updates Tipps und Tricks zu den Updates Grundsätzlich können Sie Updates immer auf 2 Wegen herunterladen, zum einen direkt über unsere Internetseite, zum anderen aus unserer email zu einem aktuellen Update. Wenn

Mehr

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten

Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten Stundenerfassung Version 1.8 Anleitung Arbeiten mit Replikaten 2008 netcadservice GmbH netcadservice GmbH Augustinerstraße 3 D-83395 Freilassing Dieses Programm ist urheberrechtlich geschützt. Eine Weitergabe

Mehr

Statistik und Computer. Statistische Software (R) Was ist Statistiksoftware? Formeln und Code. Applications. Theory. Methodology

Statistik und Computer. Statistische Software (R) Was ist Statistiksoftware? Formeln und Code. Applications. Theory. Methodology Statistik und Computer Efron (2001): Statistik im 20. Jahrhundert Applications Statistische Software (R) Paul Fink, M.Sc. Institut für Statistik Ludwig-Maximilians-Universität München Einführung Theory

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

Step by Step Webserver unter Windows Server 2003. von Christian Bartl

Step by Step Webserver unter Windows Server 2003. von Christian Bartl Step by Step Webserver unter Windows Server 2003 von Webserver unter Windows Server 2003 Um den WWW-Server-Dienst IIS (Internet Information Service) zu nutzen muss dieser zunächst installiert werden (wird

Mehr

Künstliches binäres Neuron

Künstliches binäres Neuron Künstliches binäres Neuron G.Döben-Henisch Fachbereich Informatik und Ingenieurwissenschaften FH Frankfurt am Main University of Applied Sciences D-60318 Frankfurt am Main Germany Email: doeben at fb2.fh-frankfurt.de

Mehr

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC PARAGON Technologie GmbH, Systemprogrammierung Heinrich-von-Stephan-Str. 5c 79100 Freiburg, Germany Tel. +49 (0) 761 59018201 Fax +49 (0) 761 59018130 Internet www.paragon-software.com Email sales@paragon-software.com

Mehr

Installationsanleitung dateiagent Pro

Installationsanleitung dateiagent Pro Installationsanleitung dateiagent Pro Sehr geehrter Kunde, mit dieser Anleitung möchten wir Ihnen die Installation des dateiagent Pro so einfach wie möglich gestalten. Es ist jedoch eine Softwareinstallation

Mehr

Zur drittletzten Zeile scrollen

Zur drittletzten Zeile scrollen 1 Fragen und Antworten zur Computerbedienung Thema : Zur drittletzten Zeile scrollen Thema Stichwort Programm Letzte Anpassung Zur drittletzten Zeile scrollen Scrollen VBA Excel 1.02.2014 Kurzbeschreibung:

Mehr

Zahlen auf einen Blick

Zahlen auf einen Blick Zahlen auf einen Blick Nicht ohne Grund heißt es: Ein Bild sagt mehr als 1000 Worte. Die meisten Menschen nehmen Informationen schneller auf und behalten diese eher, wenn sie als Schaubild dargeboten werden.

Mehr

Installationsanleitung für pcvisit Server (pcvisit 15.0)

Installationsanleitung für pcvisit Server (pcvisit 15.0) Installationsanleitung für pcvisit Server (pcvisit 15.0) Seite 1 version: 11.02.2015 Inhalt 1. Einleitung... 3 2. Download und Installation... 3 3. Starten der Verbindungssoftware....5 3.1 Starten der

Mehr

Übung: Verwendung von Java-Threads

Übung: Verwendung von Java-Threads Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum

Mehr

Tipps und Tricks zu Netop Vision und Vision Pro

Tipps und Tricks zu Netop Vision und Vision Pro Tipps und Tricks zu Netop Vision und Vision Pro Anwendungen auf Schülercomputer freigeben und starten Netop Vision ermöglicht Ihnen, Anwendungen und Dateien auf allen Schülercomputern gleichzeitig zu starten.

Mehr

FORUM HANDREICHUNG (STAND: AUGUST 2013)

FORUM HANDREICHUNG (STAND: AUGUST 2013) FORUM HANDREICHUNG (STAND: AUGUST 2013) Seite 2, Forum Inhalt Ein Forum anlegen... 3 Forumstypen... 4 Beiträge im Forum schreiben... 5 Beiträge im Forum beantworten... 6 Besondere Rechte der Leitung...

Mehr

Herstellen von Symbolen mit Corel Draw ab Version 9

Herstellen von Symbolen mit Corel Draw ab Version 9 Herstellen von Symbolen mit Corel Draw ab Version 9 Einleitung : Icon Design-Überblick: 1) Gestalten in Corel Draw 10.0 3) Vorlage für Photopaint für Import von Corel 4) Einfügen in die PSD-Datei und Bearbeiten

Mehr

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos in Verbindung mit der Webshopanbindung wurde speziell auf die Shop-Software shop to date von DATA BECKER abgestimmt. Mit

Mehr

Konvertieren von Settingsdateien

Konvertieren von Settingsdateien Konvertieren von Settingsdateien Mit SetEdit können sie jedes der von diesem Programm unterstützten Settingsformate in jedes andere unterstützte Format konvertieren, sofern Sie das passende Modul (in Form

Mehr

CdsComXL. Excel add-in für Bearbeitung und Auswertung der CDS-daten. ComXL-020/D, 0102. Spur 9 014.700. Spur 7 014.680. Spur 5 014.660. Spur 3 014.

CdsComXL. Excel add-in für Bearbeitung und Auswertung der CDS-daten. ComXL-020/D, 0102. Spur 9 014.700. Spur 7 014.680. Spur 5 014.660. Spur 3 014. Excel add-in für Bearbeitung und Auswertung der CDS-daten CdsComXL 100 50 0 Spur 9 014.700 Spur 7 014.680 014.660 014.640 Spur 3 Spur 5 014.620 Spur 1 014.600 ComXL-020/D, 0102 Inhaltsverzeichnis 1. Installation----------------------------------------------------------------------------------------------------

Mehr

Statistische Software (R)

Statistische Software (R) Statistische Software (R) Paul Fink, M.Sc., Eva Endres, M.Sc. Institut für Statistik Ludwig-Maximilians-Universität München Grafiken Leitmotiv bei Erstellung von Grafiken Sinnvolle, leicht zu verstehende

Mehr

Wir arbeiten mit Zufallszahlen

Wir arbeiten mit Zufallszahlen Abb. 1: Bei Kartenspielen müssen zu Beginn die Karten zufällig ausgeteilt werden. Wir arbeiten mit Zufallszahlen Jedesmal wenn ein neues Patience-Spiel gestartet wird, muss das Computerprogramm die Karten

Mehr

Beheben von verlorenen Verknüpfungen 20.06.2005

Beheben von verlorenen Verknüpfungen 20.06.2005 Vor folgender Situation ist sicher jeder Solid Edge-Anwender beim Öffnen von Baugruppen oder Drafts schon einmal gestanden: Die Ursache dafür kann sein: Die Dateien wurden über den Explorer umbenannt:

Mehr

Aktivierung der SeKA-Anmeldung

Aktivierung der SeKA-Anmeldung Aktivierung der SeKA-Anmeldung Bitte, benutzen Sie diese Methode nur, wenn Sie gerade kein Kennwort im SeKA-System erhalten haben. Wenn Sie die Aktivierung vorher schon geschafft, aber das Kennwort vergessen

Mehr

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b AGROPLUS Buchhaltung Daten-Server und Sicherheitskopie Version vom 21.10.2013b 3a) Der Daten-Server Modus und der Tresor Der Daten-Server ist eine Betriebsart welche dem Nutzer eine grosse Flexibilität

Mehr

EasyWk DAS Schwimmwettkampfprogramm

EasyWk DAS Schwimmwettkampfprogramm EasyWk DAS Schwimmwettkampfprogramm Arbeiten mit OMEGA ARES 21 EasyWk - DAS Schwimmwettkampfprogramm 1 Einleitung Diese Präsentation dient zur Darstellung der Zusammenarbeit zwischen EasyWk und der Zeitmessanlage

Mehr

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter 2 Inhaltsverzeichnis 1 Web-Kürzel 4 1.1 Einführung.......................................... 4 1.2 Web-Kürzel.........................................

Mehr

VBA-Programmierung: Zusammenfassung

VBA-Programmierung: Zusammenfassung VBA-Programmierung: Zusammenfassung Programmiersprachen (Definition, Einordnung VBA) Softwareentwicklung-Phasen: 1. Spezifikation 2. Entwurf 3. Implementierung Datentypen (einfach, zusammengesetzt) Programmablaufsteuerung

Mehr

Gratis Excel SVERWEIS Funktions-Anleitung, Tutorial, ebook, PDF-E-Book

Gratis Excel SVERWEIS Funktions-Anleitung, Tutorial, ebook, PDF-E-Book Gratis Excel SVERWEIS Funktions-Anleitung, Tutorial, ebook, PDF-E-Book Wir wollen wissen wieviel Umsatz Vertreter Müller im Juni gemacht hat? Dazu klicken wir irgendwo in ein Feld und geben ein: =SVERWEIS

Mehr

Datenmaske für SPSS. Für die Datenanalyse mit SPSS können die Daten auf verschiedene Weise aufbereitet

Datenmaske für SPSS. Für die Datenanalyse mit SPSS können die Daten auf verschiedene Weise aufbereitet Für die Datenanalyse mit SPSS können die Daten auf verschiedene Weise aufbereitet werden: 1. Tabellenkalkulationsprogramme (Excel, Paradox) 2. Datenbankprogramme (dbase, Access) 3. Reine ASCII-Dateien

Mehr

Bedienungsanleitung Einsatzplanung. Bedienungsanleitung Einsatzplanung. Inhalt. Bedienung einer Plan-Tabelle

Bedienungsanleitung Einsatzplanung. Bedienungsanleitung Einsatzplanung. Inhalt. Bedienung einer Plan-Tabelle Bedienungsanleitung Einsatzplanung Dieses Programm ist lizenzfrei verwendbar und gratis. Das Programm ist mit Excel 2010 erstellt worden und enthält VBA Programmierungen, also Typ.xlm, deshalb werden Sie

Mehr

Wir basteln einen Jahreskalender mit MS Excel.

Wir basteln einen Jahreskalender mit MS Excel. Wir basteln einen Jahreskalender mit MS Excel. In meinen Seminaren werde ich hin und wieder nach einem Excel-Jahreskalender gefragt. Im Internet findet man natürlich eine ganze Reihe mehr oder weniger

Mehr

S TAND N OVEMBE R 2012 HANDBUCH DUDLE.ELK-WUE.DE T E R M I N A B S P R A C H E N I N D E R L A N D E S K I R C H E

S TAND N OVEMBE R 2012 HANDBUCH DUDLE.ELK-WUE.DE T E R M I N A B S P R A C H E N I N D E R L A N D E S K I R C H E S TAND N OVEMBE R 2012 HANDBUCH T E R M I N A B S P R A C H E N I N D E R L A N D E S K I R C H E Herausgeber Referat Informationstechnologie in der Landeskirche und im Oberkirchenrat Evangelischer Oberkirchenrat

Mehr

Installation SQL- Server 2012 Single Node

Installation SQL- Server 2012 Single Node Installation SQL- Server 2012 Single Node Dies ist eine Installationsanleitung für den neuen SQL Server 2012. Es beschreibt eine Single Node Installation auf einem virtuellen Windows Server 2008 R2 mit

Mehr

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge Ab der Version forma 5.5 handelt es sich bei den Orientierungshilfen der Architekten-/Objektplanerverträge nicht

Mehr

Kleine Einführung in die lineare Regression mit Excel

Kleine Einführung in die lineare Regression mit Excel Kleine Einführung in die lineare Regression mit Excel Grundoperationen mit Excel Werte mit Formeln berechnen Bsp.: Mittelwert und Standardabweichung Das $-Zeichen Beispielauswertung eines Versuches Daten

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Dokumentation IBIS Monitor

Dokumentation IBIS Monitor Dokumentation IBIS Monitor Seite 1 von 16 11.01.06 Inhaltsverzeichnis 1. Allgemein 2. Installation und Programm starten 3. Programmkonfiguration 4. Aufzeichnung 4.1 Aufzeichnung mitschneiden 4.1.1 Inhalt

Mehr

Text-Zahlen-Formatieren

Text-Zahlen-Formatieren Text-Zahlen-Formatieren Beobachtung: Bei der Formatierung einer Zahl in eine Textzahl und umgekehrt zeigt Excel ein merkwürdiges Verhalten, welches nachfolgend skizziert werden soll: Wir öffnen eine neue

Mehr

Wie Sie mit Mastern arbeiten

Wie Sie mit Mastern arbeiten Wie Sie mit Mastern arbeiten Was ist ein Master? Einer der großen Vorteile von EDV besteht darin, dass Ihnen der Rechner Arbeit abnimmt. Diesen Vorteil sollten sie nutzen, wo immer es geht. In PowerPoint

Mehr

Ein Tool zum Konvertieren von Pegasus Mail Adressbüchern und Verteilerlisten in Novell Groupwise Adressbücher.

Ein Tool zum Konvertieren von Pegasus Mail Adressbüchern und Verteilerlisten in Novell Groupwise Adressbücher. Ein Tool zum Konvertieren von Pegasus Mail Adressbüchern und Verteilerlisten in Novell Groupwise Adressbücher. Inhalt 1. Konvertieren von Adressbüchern und Verteilerlisten 1.1 Grundlagen 1.2 Adressbücher

Mehr

Arge Betriebsinformatik GmbH & Co.KG, CAP News 40, Februar 2013. CAP-News 40

Arge Betriebsinformatik GmbH & Co.KG, CAP News 40, Februar 2013. CAP-News 40 CAP-News 40 CAP-News ist in unrägelmäßigen Abständen erscheinende Information zum Produktkonfigurator CAP/VARIANTS. Hier werden die neuen Befehle, Funktionen und Möglichkeiten beschrieben. In CAP-News

Mehr

1 Mathematische Grundlagen

1 Mathematische Grundlagen Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.

Mehr

FastViewer Remote Edition 2.X

FastViewer Remote Edition 2.X FastViewer Remote Edition 2.X Mit der FastViewer Remote Edition ist es möglich beliebige Rechner, unabhängig vom Standort, fernzusteuern. Die Eingabe einer Sessionnummer entfällt. Dazu muß auf dem zu steuernden

Mehr

tentoinfinity Apps 1.0 EINFÜHRUNG

tentoinfinity Apps 1.0 EINFÜHRUNG tentoinfinity Apps Una Hilfe Inhalt Copyright 2013-2015 von tentoinfinity Apps. Alle Rechte vorbehalten. Inhalt der online-hilfe wurde zuletzt aktualisiert am August 6, 2015. Zusätzlicher Support Ressourcen

Mehr

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

Cookies. Krishna Tateneni Jost Schenck Übersetzer: Jürgen Nagel

Cookies. Krishna Tateneni Jost Schenck Übersetzer: Jürgen Nagel Krishna Tateneni Jost Schenck Übersetzer: Jürgen Nagel 2 Inhaltsverzeichnis 1 Cookies 4 1.1 Regelungen......................................... 4 1.2 Verwaltung..........................................

Mehr

Tevalo Handbuch v 1.1 vom 10.11.2011

Tevalo Handbuch v 1.1 vom 10.11.2011 Tevalo Handbuch v 1.1 vom 10.11.2011 Inhalt Registrierung... 3 Kennwort vergessen... 3 Startseite nach dem Login... 4 Umfrage erstellen... 4 Fragebogen Vorschau... 7 Umfrage fertigstellen... 7 Öffentliche

Mehr

GEONET Anleitung für Web-Autoren

GEONET Anleitung für Web-Autoren GEONET Anleitung für Web-Autoren Alfred Wassermann Universität Bayreuth Alfred.Wassermann@uni-bayreuth.de 5. Mai 1999 Inhaltsverzeichnis 1 Technische Voraussetzungen 1 2 JAVA-Programme in HTML-Seiten verwenden

Mehr