Sitzung 2 Erste Schritte

2.1 Vorbereitung

  • Optional: Installieren Sie R und RStudio auf Ihrem Computer.

2.2 Lernziele für diese Sitzung

Sie können…

  • Rechenoperatoren einsetzen.
  • Variablen zuweisen.
  • Funktionen aufrufen.
  • Hilfe zu Funktionen anzeigen.
  • die wichtigsten Variablentypen bestimmen.
  • zwischen Variablentypen konvertieren.

2.3 Operatoren

Zunächst stellen wir fest, dass man die R-Konsole ganz banal als Taschenrechner benutzen kann:

1 + 4
## [1] 5
8 / 3
## [1] 2.666667
(2.45 + 3.5) * 7
## [1] 41.65

Die Zeichen +, -, * usw. heißen in der Informatik Operatoren oder Infixe (weil sie immer zwischen zwei Werten stehen).

2.4 Variablen

Variablen funktionieren so, dass man einem Wert einen Namen gibt. Die Zuweisung folgt dabei dem Schema NAME <- WERT:

x <- 5

Nach einer erfolgreichen Variablenzuweisung gibt die Konsole keine Rückmeldung, sondern nur bei Fehlern.

x steht jetzt für die Zahl fünf. Mit dieser Variable können wir jetzt genauso rechnen wie mit einer Zahl:

x + 3
## [1] 8

Auch die Zuweisung von Variablen kann Rechenoperationen und andere Variablen enthalten:

y <- (x * 2) - 1
print(y)
## [1] 9

Der Befehl print(y) ist dabei ganz einfach die Anweisung an die Konsole, den Wert für y auszugeben. Das passiert zwar auch, wenn man nur y eingibt, aber print(y) (oder print(x), print(1 + 1), usw.) ist die formal korrekte Schreibweise.

Der Wert einer Variable kann auch verändert werden. Dafür weisen wir ihr einfach einen neuen Wert zu:

x <- 20
print(x)
## [1] 20

Eine Besonderheit ist, dass der alte Wert der Variable auch innerhalb der Zuweisung eines neuen Werts benutzt werden darf. Das kann in einem Script sehr praktisch sein. Wenn wir x also um 0,5 erhöhen wollen, sieht das so aus:

x <- x + 0.5
print(x)
## [1] 20.5

Dabei wird als Dezimaltrennzeichen ausschließlich der Punkt verwendet.

2.5 Konstanten

Manche benannten Werte sind schon in R eingebaut:

print(pi)
## [1] 3.141593

Diese Werte heißen üblicherweise Konstanten – allerdings lassen sie sich in R auch überschreiben!

pi <- 3
print(pi)
## [1] 3

2.6 Funktionen

Mit print() haben wir schon unsere erste Funktion kennengelernt. R stellt uns eine Vielzahl von verschiedenen Funktionen zur Verfügung, und sie werden immer nach dem gleichen Schema benutzt: FUNKTIONSNAME(PARAMETER).

Parameter (auf Englisch auch arguments) sind die Werte, die als Input an die Funktion übergeben werden. Je nach Funktion können das auch mehrere Werte sein, die dann durch Kommas getrennt werden. So nimmt die Funktion max(), die den Maximalwert bestimmt, beliebig viele Zahlen als Parameter:

max(1, 2, 2, 5, 4, 3)
## [1] 5

Die Funktion round() hat als optionalen Parameter die Anzahl der Nachkommastellen, auf die gerundet werden soll. Wenn er nicht angegeben wird, nimmmt dieser Parameter immer den Wert 0 an:

round(4.567)
## [1] 5

Aber er lässt sich auch spezifizieren:

round(4.567, digits = 2)
## [1] 4.57

Dabei sind die folgenden Ausdrücke identisch:

round(4.567, digits = 2)
## [1] 4.57
round(4.567, 2)
## [1] 4.57
round(digits = 2, 4.567)
## [1] 4.57

Was Funktionen genau machen und welche Parameter sie dabei nehmen, ist in der R-Dokumentation sehr ausführlich (und auf den ersten Blick recht kompliziert) beschrieben. Ganz am Ende der Hilfeseite finden sich oft Beipsiele. Die Hilfe zu einer Funktion kann mit folgendem Befehl aufgerufen werden:

?max

Notiz am Rande: Auch die Infix-Operatoren +, -, *, usw. sind eigentlich nur verkürzte Schreibweisen von Funktionen. Mit backticks ( ` ) lassen sie sich in vollwertige Funktionen zurückverwandeln:

`+`(2, 2)
## [1] 4

2.7 Strings

R kann nicht nur mit Zahlen umgehen, sondern auch mit Text. Ein String ist eine Aneinanderreihung von Buchstaben, und wird mit einfachen oder doppelten Anführungszeichen umschlossen:

print("Hello, World!")
## [1] "Hello, World!"

Auch Variablen können Strings als Wert haben:

name <- "Hase"

Es gibt auch Funktionen, die Strings als Parameter nehmen. paste fügt Strings aneinander:

paste("Mein Name ist", name)
## [1] "Mein Name ist Hase"

2.8 Datentypen

Den Typ einer Variable oder eines Wertes bestimmen wir durch den Befehl str():

str(name)
##  chr "Hase"
str(10)
##  num 10

Dabei steht chr („character“) für Strings und num („numeric“) für Zahlen.

Ein weiterer Variablentyp ist logi („logical“), der prinzipiell nur die Werte TRUE oder FALSE annehmen kann. Dieser Typ heißt auch Boolsche Variabel:

str(FALSE)
##  logi FALSE

Soweit es ein eindeutiges Ergebnis gibt, kann R mit den entsprechenden Befehlen Werte vom einen in den anderen Typ umwandeln:

as.numeric("1000")
## [1] 1000
as.character(x)
## [1] "20.5"
as.logical(0)
## [1] FALSE

Kann R einen Wert nicht umwandeln, dann kommt dabei NA raus (mit einer Warnung):

as.numeric("Hallo!")
## [1] NA

NA („not available/assigned“) ist dabei ein besonderer Wert, den jeder Variablentyp annehmen kann.

2.9 Aufgaben

2.9.1 Rechnen

Lösen Sie folgende Rechenaufgaben mit Hilfe von R:

  • 4 plus 10
  • 8 mal 12
  • 4 minus 7
  • 3 hoch 18
  • 4,5 geteilt durch die Summe von 5 und 8
  • Quadratwurzel aus 101
  • Kubikwurzel aus 12

2.9.2 Variablen

Weisen Sie den Variablen a bis g folgende Werte zu:

  1. TRUE
  2. 2
  3. Ihren Namen
  4. Die Quadratwurzel aus b
  5. 8 \(\textstyle\frac{1}{4}\)
  6. Das vierfache von e
  7. Die aktuelle Uhrzeit mit Datum und Zeitzone (automatisch generiert)

2.9.3 Datentypen

Bestimmen Sie die Typen der Variablen a bis g.

Finden Sie je zwei Beispiele für die Umwandlung…

  • von numeric zu character
  • von numeric zu logical
  • von character zu logical
  • von character zu numeric
  • von logical zu character
  • von logical zu numeric
  • von character zu Date
  • von Date zu numeric

(Date ist kein eigentlicher Datentyp, aber erfüllt an dieser Stelle denselben Zweck.)

2.9.4 Swirl

Folgen Sie den Anleitungen, um Swirl zu installieren: https://swirlstats.com/students.html

Absolvieren Sie Lektion 1 („Basic Building Blocks“).

2.9.5 Recherche

Recherchieren Sie:

  • Welche Funktion gibt den absoluten Wert einer Zahl aus? (z.B. -4 ergibt 4, 8 ergibt 8)
  • Welche Konstanten sind in R „eingebaut“?
  • Wie bestimmt man den „Rest“ einer Division? (z.B. 40 geteilt durch 7 hat den Rest 5)
  • In der Statistik wird zwischen stetigen und diskreten Variablen unterschieden. Welche äquivalente Unterscheidung nimmt R vor?

2.9.6 Kniffliges

Lösen Sie die folgenden Probleme:

  • Durch welchen Ausdruck lässt sich eine Zahl auf die nächste gerade Zahl runden? (z.B. 18,9 auf 18,0 oder 21,2 auf 22,0)
  • Durch welchen Ausdruck lässt sich eine Zahl auf die nächste halbe Zahl abrunden? (z.B. 18,9 auf 18,5 oder 21,2 auf 21,0)
  • Absolvieren Sie in die Lektion 8 („Logic“).
  • Machen Sie sich mit der Funktion xor() vertraut. Finden Sie einen Ausdruck, der xor() simuliert, aber nur aus Infix-Operatoren besteht.
  • Was bedeutet „strong“ bzw „weak typing“? Wie ist R hier einzuordnen?
  • Was sind funktionale Programmiersprachen? Welche Eigenschaften von R sind funktional, welche nicht?
  • Starten Sie den R Track in Excercism
  • Richten Sie sich ein IDE außer RStudio für einen R Workflow ein.