Einführung in R. Einführung. Einführung / 3. Einführung / 2

Ähnliche Dokumente
Einheit 1. Einführung in R. IFAS JKU Linz c 2018 Programmieren mit Statistischer Software 1 0 / 11

Einführung in R. Felix Kuhr Institut für Informationssysteme Universtität zu Lübeck. December 13, 2016

Einführung in R. Matthias Templ, Leonhard Seyfang. Oktober 2005

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

Klaus Schliep. 16. Februar 2004

R Einstieg. Manuel Eugster, Armin Monecke, Faban Scheipl. Institut für Statistik Ludwig-Maximilians-Universität München.

Grundlagen C R ash-kurs

Programmieren mit statistischer Software

Syntax Variablen. mtrx <- matrix (c(1,2,3,4,5,6),ncol=2,nrow=3) Anzeigen des Types: class(var) Umwandeln mit: as.vector(mtrx)

R-Wörterbuch Ein Anfang... ein Klick auf einen Begriff führt, sofern vorhanden, zu dessen Erklärung.

Programmieren mit statistischer Software

Formale Methoden der Ökonomik: Einführung in die empirische Wirtschaftsforschung

Statistisches Programmieren

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 in die Ökonometrie

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services

R-Fehlermeldungsleitfaden

Informatik Erste Schritte mit MATLAB

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Programmiervorkurs für die Numerik Teil 2/4

Kurze Einführung in R

Einführung in die Ökonometrie - Übung

Dipl.-Volksw. Markus Pullen Wintersemester 2012/13

Objekte haben eine eigene Notation, also Schreibweise, beim Aufruf:

Statistische Software (R)

Statistik für Informatiker, SS 2017 Organisatorisches, ein Startbeispiel und eine sehr knappe R-Einführung

Programmieren mit statistischer Software

m-files sind Folgen von MATLAB-Anweisungen oder Daten-Files.

Einführung in die formale Demographie Übung

Numerik-Programm, mittlerweile mit vielen Erweiterungen (Toolboxen) Matlab = Matrix Laboratory Sehr gute Doku (doc, help, lookfor)

4.2 Selbstdefinierte Matlab-Funktionen 1. Teil

Statistische Software (R)

Funktionen in JavaScript

Ursprünge. Die Syntax von Java. Das Wichtigste in Kürze. Konsequenzen. Weiteres Vorgehen. Rund um Java

Programmieren mit statistischer Software

Funktionen in JavaScript

MATLAB Sommersemester 2018 Dr. Ulf Mäder

2 Teil 2: Nassi-Schneiderman

Python Einführung. Monica Selva Soto. 24 März Mathematisches Institut

Ulrich Stein

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Bash-Skripting Linux-Kurs der Unix-AG

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

Probeklausur: Programmierung WS04/05

Programming 101. Carl Herrmann IPMB & DKFZ

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Die Syntax von Java. Ursprünge. Konsequenzen. Das Wichtigste in Kürze. Weiteres Vorgehen. Rund um Java. Sun Microsystems. Borland Software Corp

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Empirische Softwaretechnik

Einführung in MATLAB + MATLAB Simulink. Dipl.-Inf. Markus Appel

Mathematische Computer-Software

7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});

Lineare Algebra mit dem Statistikprogramm R

Crashkurs Haskell Mentoring WiSe 2016/17. Anja Wolffgramm Freie Universität Berlin

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

Programmierkurs Python I

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50

Organisatorisches. Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, , 14 Uhr bis Do, , 8Uhr

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Zweiter Teil des Tutorials. Workspace M-files Matrizen Flow Control Weitere Datenstrukturen Gemeinsames Beispiel erarbeiten

Vorbemerkung. Allgemeines zu Shell Scripts. Aufruf. Einfaches Beispiel

Schülerworkshop Computertomographie Mathematik als Schlüsseltechnologie

3 Kurzeinführung in Matlab

Strings. Daten aus Dateien einlesen und in Dateien speichern.

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen

L A TEX-Tipps & knitr

Angewandte Mathematik und Programmierung

javascript Coding-Guidelines 2. Ausgabe Februar 2015 Der Guideline beschreibt den verwendeten Coding-Stil von javascript als eigene Richtline.

Grundlagen von MATLAB

S: nur für Statistiker?

TU Bergakademie Freiberg Datenanalyse/Statistik Wintersemester 2016/ Übungsblatt. Homepage zur Übung unter:

Schleifen Datenfelder (Arrays) Verzweigungen

Mobile Anwendungsentwicklung - Überblick über ios & Swift I -

Matlab: eine kleine Einführung

Eine Einführung in R: Grundlagen I

Prof. Dr. Stefan Funken, Dipl.-Ing. Christoph Erath 15. Mai WiMa-Praktikum (Matlab 2/9) Einführung in LATEXund Matlab

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

Klausur Grundlagen der Programmierung

Übersicht Shell-Scripten

Bash-Skripting Linux-Kurs der Unix-AG

Statistische Datenanalyse mit R. Dr. Andrea Denecke Leibniz Universität IT-Services

WS2018/ Oktober 2018

Programmieren I. Kapitel 5. Kontrollfluss

WS2017/ Oktober 2017

ÜBUNGS-BLOCK 7 LÖSUNGEN

Datenaufbereitung, Grafische Datenanalyse

7. Einführung in C++ Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

Shell. Oder Konsole suchen im Application Finder. Auch Terminal, Bash oder Kommandozeile genannt. Bash nimmt Befehle entgegen und führt diese aus

Eine Einführung in R: Programmstrukturen

Transkript:

Einführung Einführung in R R ist ein Software-Paket für Statistisches Rechnen und Graphik. Es ist die Open Source Implementierung der Sprache S, die von John Chambers und Kollegen in den Bell Laboratories in den 1970ern entwickelt worden ist. Eine weitere, jedoch kommerzielle Implementierung von S ist S-PLUS. Bettina Grün Institut für Statistik LMU München SS 2011 Bettina Grün c SS 2011 Einführung in R 1 / 46 Einführung / 2 Die Sprache S erlaubt interaktives Rechnen mit Daten in einer vollwertigen interpretierten Programmiersprache, die den Benutzern Zugang zu allen Strukturen und Graphik für explorative Datenanalyse und Publikationszwecke bietet. Einführung / 3 R ist ursprünglich von Ross Ihaka und Robert Gentleman an der Universität von Auckland Mitte 1990er entwickelt worden. Derzeit Wartung und Weiterentwicklung durch eine weltweite Gruppe von Freiwilligen aus Forschung und Wirtschaft. Primäre Verbreitung über Webseiten (www.r-project.org) und Archive (cran.r-project.org). R kann über Packages erweitert werden. Einige Packages sind in der R Distribution enthalten, weitere befinden sich auf CRAN (derzeit 2970 Pakete). Bettina Grün c SS 2011 Einführung in R 2 / 46 Bettina Grün c SS 2011 Einführung in R 3 / 46

Überblick Überblick / 2 Edgar Anderson's Iris Data Sepal.Length 2.0 2.5 3.0 3.5 4.0 0.5 1.0 1.5 2.0 2.5 4.5 5.5 6.5 7.5 2.0 3.0 4.0 Sepal.Width Petal.Length 1 2 3 4 5 6 7 0.5 1.5 2.5 Petal.Width 4.5 5.5 6.5 7.5 1 2 3 4 5 6 7 Bettina Grün c SS 2011 Einführung in R 4 / 46 Überblick / 3 Bettina Grün c SS 2011 Einführung in R 5 / 46 Überblick / 4 0 1 2 3 4 5 6 7 8 FOX WOLF BEAR STAR NOSE MOLE HAIRY TAIL MOLE RACCOON CIVET CAT COYOTE PECCARY BROWN BAT LUMP NOSE BAT SILVER HAIR BAT COMMON MOLE MOOSE DEER ANTELOPE BISON MOUNTAIN GOAT MUSKOX MOUNTAIN SHEEP REINDEER ELK OPOSSUM MARMOT BEAVER GROUNDHOG PRAIRIE DOG GROUND SQUIRREL CHIPMUNK FOX SQUIRREL GRAY SQUIRREL POCKET GOPHER KANGAROO RAT PORCUPINE GUINEA PIG FIELD MOUSE PACK RAT MUSKRAT BLACK RAT HOUSE MOUSE PYGMY BAT HOUSE BAT HOARY BAT RED BAT SNOWSHOE RABBIT PIKA MINK WEASEL FERRET BADGER SKUNK SEA OTTER GREY SEAL FISHER MARTEN WOLVERINE RIVER OTTER SEA LION FUR SEAL OCELOT JAGUAR COUGAR LYNX ELEPHANT SEAL WALRUS ARMADILLO z x y bot.can top.can top.inc top.mol bot.mol bot.inc bot.pre top.pre Bettina Grün c SS 2011 Einführung in R 6 / 46 Bettina Grün c SS 2011 Einführung in R 7 / 46

Überblick / 5 Vor- und Nachteile von R 1 mass p < 0.001 Vorteile: Open source Node 2 (n = 167) 26.3 > 26.3 1 Node 4 (n = 304) 3 age p < 0.001 30 > 30 1 Node 5 (n = 297) 1 keine black box Skalierbarkeit, Adaptierbarkeit Erweiterbarkeit durch einfaches Programmieren preisgekrönte Sprache Automatisierung sich wiederholender Abläufe, Simulationen Reproduzierbarkeit, Sweave pos neg 50 100 150 0.8 pos neg 0.6 0.4 0.2 0 50 100 150 0.8 pos neg 0.6 0.4 0.2 0 50 100 150 0.8 0.6 0.4 0.2 0 Support durch Mailinglisten, usw. Nachteile: keine komfortable graphische Benutzeroberfläche, sondern Command Line Interface keine interaktive Grafik Bettina Grün c SS 2011 Einführung in R 8 / 46 Wie komme ich zu R Bettina Grün c SS 2011 Einführung in R 9 / 46 Installieren von R Die allgemeine Informationswebseite ist http://www.r-project.org/. CRAN: the Comprehensive R Archive Network Die Hauptseite ist http://cran.r-project.org/. Mirror Seiten sind in vielen Länder verfügbar, z.b. http://cran.us.r-project.org/. Auf den CRAN Seiten gibt es Binärdistributionen für Windows, Mac und mehrere Linux Distributionen. Unter Windows: Lade den Installer R-2.13.0-win.exe von CRAN herunter und führe die Datei aus. Setzen des persönlichen Arbeitsverzeichnis: rechte Maustaste bei Start-Icon: Eigenschaften Ausführen in Setzen im GUI über Menü: File Change dir... Setzen über die Command Line mit setwd() Kontrolle mit getwd() Starten von R: über den Start-Icon über die Datei Rgui.exe Bettina Grün c SS 2011 Einführung in R 10 / 46 Bettina Grün c SS 2011 Einführung in R 11 / 46

Informationsquellen über R Pakete Die Webseite http://www.r-project.org/ und CRAN. Die frequently asked questions (FAQ) Listen auf CRAN. Manuals: z.b. An Introduction to R R Data Import/Export Die Manuals sind Teil derr Installation bzw. befinden sich auf CRAN. Unter Windows können diese im Menü unter Help Manuals gefunden werden. Standardisierte Form der Erweiterung von R Verpacken von Funktionen, Sourcen, Datensätze und Dokumentation Validierungsmöglichkeiten einfache Verteilung an Dritte, z.b. über CRAN Installieren mit install.packages(paketname) Laden mit library(paketname) Bettina Grün c SS 2011 Einführung in R 12 / 46 Sweave Bettina Grün c SS 2011 Einführung in R 13 / 46 R als Taschenrechner Dynamische Dokumente durch Verbindung von Text und Code: L A T E X mit R Beginn von Code Chunk mit <<>>=, von Dokumentation Chunk mit @ Skalare im Text mit \Sexpr{} Sweave() erzeugt tex-datei mit eingebundenem R-Output Stangle() extrahiert den R Code Manual unter http://www.statistik.lmu.de/~leisch/sweave Beispiele als Vignetten in Source Paketen: vignette(vignettenname) edit(vignettenobjekt) Z.B. im Paket grid die Vignette grid. > 1 + 1 [1] 2 > a <- 0.5 > b <- a * 2 > exp(b) [1] 2.718282 Bettina Grün c SS 2011 Einführung in R 14 / 46 Bettina Grün c SS 2011 Einführung in R 15 / 46

R Basics Wenn der Funktionsname und anschließend [RET] getippt wird, wird die Funktion angezeigt. Um eine Funktion aufzurufen, muss der Funktionsname zusammen mit der Argumentenliste innerhalb von () eingetippt werden, auch wenn diese leer ist. D.h. q()[ret] anstatt q[ret] ist notwendig, um R zu verlassen. R Basics / 2 Hilfe: Zuweisung: help(topic) x = 5?topic x <- 5 help.search("topic") 5 -> x help.start() Operatoren: Vergleiche: +, -, *, /, ^ ==,!=, >, >=, <, <= &, &&,, see help("==") see help("+") Schleifen: Kommentare: for, while, if alles nach # Namen: case sensitive, Buchstabe zu Beginn Bettina Grün c SS 2011 Einführung in R 16 / 46 R Basics / 3 Elementare Datentypen: Logical: TRUE, FALSE, T, F Integer: 1, 100, 326,... Double: 1.0, 3.1415297, 2.718282, NaN, Inf, -Inf Complex: 1+0i, 1i, 3+5i Character: "Hello", "How are you?" Missing Values: NA Bettina Grün c SS 2011 Einführung in R 17 / 46 R Basics / 4 Zusammengesetzte Datentypen: vector: von Elementen desselben elementaren Typs array: Vektor mit Dimensionsattribut (beliebige Anzahl an Dimensionen erlaubt). matrix: 2-dimensionaler Array. Spezialfall, um die üblichen Matrixoperationen wie z.b. Matrixmultiplikation durchführen zu können. factor: Spezieller Vektor für das Kodieren von Klassen. list: Liste von Elementen von verschiedenen Datentypen (sowohl elementar als auch zusammengesetzt) data.frame: Mischung aus Matrix und Liste Zugriff über [...], Dimensionen durch, getrennt. Bettina Grün c SS 2011 Einführung in R 18 / 46 Bettina Grün c SS 2011 Einführung in R 19 / 46

Methoden zur Konstruktion Die Funktionen zur Konstruktion haben dieselben Namen wie die entsprechenden Datentypen. Umwandlung kann mithilfe von as.type erfolgen, Checken des Typs mithilfe von is.type. > x <- matrix(1, nrow=5, ncol=2) > is.matrix(x) [1] TRUE > as.vector(x) [1] 1 1 1 1 1 1 1 1 1 1 > x <- list(a="hello", b=1:10, pi=3.1415927) Methoden zur Konstruktion / 2 Konstruktion einfacher Vektoren: > c(1,2,7) [1] 1 2 7 > c("hello", "World") [1] "Hello" "World" Bettina Grün c SS 2011 Einführung in R 20 / 46 Zugreifen auf Elemente Bettina Grün c SS 2011 Einführung in R 21 / 46 Zugreifen auf Elemente / 2 Vektoren: Elemente können über Nummern oder Namen angesprochen werden > x <- c(5,3,7) > names(x) <- c("apple","banana","orange") > x["apple"] # access by name apple 5 > x[1:2] # access by number apple banana 5 3 > length(x) [1] 3 Arrays: analog wie bei Vektoren, wobei die Dimensionen durch Kommas unterteilt werden > x <- matrix(1:8, ncol=2); > colnames(x) <- c("first", "Second") > x[1:2,] # returns a matrix First Second [1,] 1 5 [2,] 2 6 > x[,"second"] # returns a vector [1] 5 6 7 8 Bettina Grün c SS 2011 Einführung in R 22 / 46 Bettina Grün c SS 2011 Einführung in R 23 / 46

Zugreifen auf Elemente / 3 > x[-3,] # exclude third row First Second [1,] 1 5 [2,] 2 6 [3,] 4 8 > dim(x) [1] 4 2 Zugreifen auf Elemente / 4 Listen: Dollar Zeichen $ oder Nummer in eckigen Klammern > x <- list(a="hello", b=1:10, pi=3.1415927) > x$a [1] "Hello" > x[["a"]] [1] "Hello" > x[[1]] ## returns first list element [1] "Hello" > x[1] ## returns a list with one element $a [1] "Hello" > length(x) [1] 3 Bettina Grün c SS 2011 Einführung in R 24 / 46 Data Frames Bettina Grün c SS 2011 Einführung in R 25 / 46 Attribute Können betrachtet werden als Matrix, wo jede Spalte einen unterschiedlichen Datentyp besitzt. Liste, wo jedes Element ein Vektor derselben Länge ist. Zugriff auf die Elemente analog wie bei Matrizen ODER Listen. attach() ermöglicht den Zugriff auf die Spalten über ihre Namen, wie wenn sie Variablen wären. Beobachtungen mit Missing Values können mithilfe von na.omit() entfernt werden, wodurch die gesamte Zeile gelöscht wird. Attribute ermöglichen die detailliertere Beschreibung des Inhaltes. Ein Array ist z.b. 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,] 1 3 5 7 9 [2,] 2 4 6 8 10 > attributes(x) $dim [1] 2 5 Bettina Grün c SS 2011 Einführung in R 26 / 46 Bettina Grün c SS 2011 Einführung in R 27 / 46

Attribute / 2 > rownames(x) <- c("eins", "Zwei") > x [,1] [,2] [,3] [,4] [,5] Eins 1 3 5 7 9 Zwei 2 4 6 8 10 > attributes(x) $dim [1] 2 5 $dimnames $dimnames[[1]] [1] "Eins" "Zwei" $dimnames[[2]] NULL Attribute / 3 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,] 1 3 5 7 9 [2,] 2 4 6 8 10 > 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" Bettina Grün c SS 2011 Einführung in R 28 / 46 Klassen Bettina Grün c SS 2011 Einführung in R 29 / 46 Klassen / 2 Unglücklicherweise hat S gleich zwei Klassensysteme: S3 und S4. Wir werden uns nur mit dem viel einfacheren S3 System beschäftigen. Ein spezielles Attribut jedes Objektes beschreibt seine Klasse. Dies ermöglicht einfaches objekt-orientiertes Programmieren und das Überladen von Funktionen. Setzen und Überprüfen der Klasse eines Objektes: > class(y) [1] "numeric" > class(y) <- "newclass" Generische Funktionen verhalten sich unterschiedlich für Objekte verschiedener Klassen. Bettina Grün c SS 2011 Einführung in R 30 / 46 > (x <- rep(0:1, c(5, 10))) [1] 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 > class(x) [1] "integer" > summary(x) Min. 1st Qu. Median Mean 3rd Qu. Max. 0.0000 0.0000 1.0000 0.6667 1.0000 1.0000 > y <- as.factor(x) > class(y) [1] "factor" > summary(y) 0 1 5 10 Bettina Grün c SS 2011 Einführung in R 31 / 46

Funktionen Funktionen: Formale Definition 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. Einer der größten Vorteile von S ist, dass jeder Benutzer das System leicht, um eigene Funktionen erweitern oder bestehende Funktionen modifizieren kann. 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. > 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. Bettina Grün c SS 2011 Einführung in R 32 / 46 Funktionen aufrufen > moment <- function(x, n=2) { + sum(x^n)/length(x) + } Es wird nur ein Wert zurückgegeben (letztes Statement oder Argument von return). Wenn mehrere Werte zurückgegeben werden sollen, dann können diese in einer Liste zusammengefasst werden. Argumente mit Namen: Bei Aufruf einer Funktion können die Argumente in einer beliebigen Reihenfolge übergeben werden (z.b. moment(n=3, x=x)). Default Werte: Argumente mit Default Werten können beim Aufruf der Funktion weggelassen werden. Bettina Grün c SS 2011 Einführung in R 33 / 46 Funktionen aufrufen / 2 > set.seed(20100322) > y <- rnorm(100) > y[1:4] [1] -0.8607870-0.2587355 1.3743010-2.9897422 > length(y) [1] 100 > moment(y) [1] 0.9785426 > moment(y, 1) [1] -0.2197408 Bettina Grün c SS 2011 Einführung in R 34 / 46 Bettina Grün c SS 2011 Einführung in R 35 / 46

Funktionen aufrufen / 3 > moment(n = 1, x = y) [1] -0.2197408 > mean(y) [1] -0.2197408 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,...) { + ## do some computations using x, y and myarg + ## then call the standard plot function + plot(x, y,...) + } Damit versteht myplot() zusätzlich zu seinen eigenen Argumenten implizit auch alle Argumente von plot(). x <- list(...) im Körper einer Funktion konvertiert alle unspezifizierten Argumente in eine benannte Liste. Bettina Grün c SS 2011 Einführung in R 36 / 46 Argumente zusammenfügen Bettina Grün c SS 2011 Einführung in R 37 / 46 Lazy Evaluation 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. 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] 2.079442 > myfun(2) Error in y * log(x) : y is missing Bettina Grün c SS 2011 Einführung in R 38 / 46 Bettina Grün c SS 2011 Einführung in R 39 / 46

Flusskontrolle Der if Befehl 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 und switch() verwendet werden. for und if sind von diesen, die bei weitem am häufigsten verwendeten. if-else Konstrukte haben die folgende 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. Bettina Grün c SS 2011 Einführung in R 40 / 46 Der if Befehl / 2 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) + } Bettina Grün c SS 2011 Einführung in R 41 / 46 Wichtige R Funktionen q(): Beende die Session. Es wird gefragt, ob der Workspace (im File.RData) gespeichert werden soll. help(): Bekomme Hilfeseite für eine Funktion oder ein Objekt. help.start(): Verwende einen Webbrowser für das Lesen der Hilfe. ls(): Liste die Objekte im Workspace auf. rm(): Lösche Objekte im Workspace. save.image(): Speichern des Workspace-Inhalts in einem File. save(): Speichern eines Objekts in einem File. load(): Laden von mit R gespeicherten Daten. example(): Führe das Beispiel auf der Hilfeseite aus. str(): Anzeigen der Struktur eines Objekts. summary(): Fasse die Information über ein Objekt kurz zusammen. plot(): Erstelle eine Graphik für ein Objekt. library(): Laden von zusätzlichen (schon installierten) Packages. Bettina Grün c SS 2011 Einführung in R 42 / 46 Bettina Grün c SS 2011 Einführung in R 43 / 46

Einlesen von Daten Erstellen von Skripts In R gibt es die Möglichkeit, die Daten aus den verschiedensten Formaten einzulesen. Eine nähere Beschreibung befindet sich in R Data Import/Export. Häufig benötigte Befehle sind: read.table(): Einlesen von Daten in Tabellen-Format aus einer Datei und Erzeugen eines Data Frames Wichtige Parameter sind z.b. header, sep. read.csv() und read.csv2() sind spezielle Funktionen für Dateien im CSV-Format, in dem man z.b. Excel-Dateien abspeichern kann. Bei read.csv2() sind die Einträge durch Strichpunkte getrennt und das Dezimalzeichen ist wie im Deutschen üblich ein Komma. load(): Laden von Daten (und auch Objekten), die in R mit save() gespeichert worden sind Um Reproduzierbarkeit der R Sessions zu erreichen, können die einzelnen Befehle in ein File geschrieben werden und daraus nach R geladen werden. Verwende einen externen Editor zum Schreiben eines Skripts: Notepad, Tinn-R, Emacs... Einlesen des Skripts in R: > source("skript.r") Wenn die Befehle und Ergebnisse am Bildschirm mitverfolgt werden sollen: > source("skript.r", echo = TRUE) Wenn nur die Ergebnisse am Bildschirm mitverfolgt werden sollen: > source("skript.r", print.eval = TRUE) Bettina Grün c SS 2011 Einführung in R 44 / 46 Bettina Grün c SS 2011 Einführung in R 45 / 46 Erstellen von Skripts / 2 Mithilfe von sink kann die Ausgabe vom Bildschirm in eine Datei umgeleitet werden: > sink("sink.txt") > source("skript.r", echo = TRUE) > sink() Bettina Grün c SS 2011 Einführung in R 46 / 46