# Addition
2+8
## [1] 10
R
R
funktioniert unter anderem wie ein mächtiger Taschenrechner. Folgende grundlegende mathematische Operationen können mit R
ausgeführt werden:
Operation | Symbol |
---|---|
Addition | + |
Subtraktion | - |
Multiplikation | * |
Division | / |
Potenzieren | ^ oder ** |
Wurzel | sqrt(x) |
Hier ein paar Beispiele:
# Addition
2+8
## [1] 10
# Subtraktion
9-7
## [1] 2
# Multiplikation
4*4
## [1] 16
# Division
6/2
## [1] 3
# Potenzieren
2^3
## [1] 8
# Exponent anders notiert
2**3
## [1] 8
# Quadratwurzel
sqrt(25)
## [1] 5
Vielleicht haben Sie sich schon gefragt, wieso vor jeder Ausgabe die Zeichenkette ## [1]
steht. Die Rauten ##
sehen Sie in Ihrer R
Konsole nicht. Sie wurden von quarto
(siehe Kapitel 23) für diese Webseitenversion des Buches erzeugt um anzugeben, dass es sich um eine R-Ausgabe
handelt, und nicht um R-Befehle
. So kann auch nichts schief gehen, falls Sie Code-Chunks von dieser Seite markieren, kopieren und in Ihre Scriptdatei übertragen, denn dort kommentieren die ##
die Zeile aus, so dass sie nicht ausgeführt werden.
Die [1]
erklärt sich folgendermaßen. In R
beginnt jede Ausgabezeile mit der Position des Wertes, der als nächstes ausgegeben wird. Da wir derzeit nur Rechenoperationen durchführen, die genau ein Ergebnis haben, ist die Position unseres Ergebniswertes immer [1]
. Hat man längere Datenreihen, z.B. das Gewicht von 10 Probanden in kg, dann könnte die Ausgabe so aussehen:
## [1] 102.20 76.83 98.50 86.55 121.93
## [6] 89.21 123.22 78.23 98.33 83.37
Die zweite Ausgabezeile beginnt mit einer [6]
, was bedeutet, dass nachfolgend die 6. Position der Wertereihe angezeigt wird.
Das Ziehen einer Wurzel erfolgt über die Funktion sqrt()
. Damit Funktionen arbeiten können, benötigen sie ein “Argument”. Das Argument ist in unserem Fall die Zahl 25, da wir die Wurzel aus 25 ziehen wollen.
# Wurzel ziehen
sqrt(25)
## [1] 5
Argumente werden der Funktion in runden Klammern übergeben. So erklärt sich der Befehl sqrt(25)
.
# Lange Formel
sqrt( (2*10) / (20/2) ) - 9
## [1] -7.585786
# Befehl schlägt fehl!
2,3 - 9
## Error: <text>:2:2: Unerwartete(s) ','
## 1: # Befehl schlägt fehl!
## 2: 2,
## ^
An der letzten Ausgabe zeigt sich ein wesentliches Merkmal von R
:
Dies ist ein häufiger Anfängerfehler und meist der Grund, warum am Anfang etwas nicht funktioniert.
# Dezimalstellen mit .
4.25 * 6.25
## [1] 26.5625
# nicht mit Komma!
# schlägt fehl
4,25 * 6,78
## Error: <text>:3:2: Unerwartete(s) ','
## 2: # schlägt fehl
## 3: 4,
## ^
Weitere mathematische Funktionen sind:
Funktion | Befehl | Beispiel | Ausgabe |
---|---|---|---|
Exponentialfunktion | exp() |
exp(1) |
[1] 2.718282 |
natürlicher Logarithmus | log() |
log(2) |
[1] 0.6931472 |
Logarithmus zur Basis \(2\) | log2() |
log2(64) |
[1] 6 |
Logarithmus zur Basis \(10\) | log10() |
log10(1000) |
[1] 3 |
Logarithmus zur Basis \(n\) | log(x, n) |
log(343, 7) |
[1] 3 |
Sinus | sin() |
sin(2) |
[1] 0.9092974 |
Kosinus | cos() |
cos(2) |
[1] -0.4161468 |
Tangens | tan() |
tan(2) |
[1] -2.18504 |
Absolutwert | abs() |
abs(-7) |
[1] 7 |
R
zeigt standardmäßig 6 Nachkommastellen an. Intern rechnet R
mit “doppelter Genauigkeit”. Damit sind Nummern mit ca. 17 Stellen (1 Ziffer + 16 Nachkommastellen oder eben eine 17 stellige Zahl ohne Nachkommastellen) repräsentierbar. Möchte man die Nachkommastellen entsprechend angezeigt bekommen, so kann man dies mit der options-Funktion einstellen:
# gib ab jetzt 16 Nachkommastellen aus
options(digits=17)
# Wurzel aus 3
sqrt(3)
## [1] 1.7320508075688772
Nach dieser Eingabe liefert R
Ergebnisse mit bis zu 16 Nachkommastellen.
Wir stellen den Wert wieder zurück auf 6 Nachkommastellen.
# gib ab jetzt wieder "nur" 6 Nachkommastellen aus
options(digits=7)
Ziehen wir die Wurzel aus 3, erhalten wir ein Ergebnis mit 6 Nachkommastellen.
# Wurzel aus 3
sqrt(3)
## [1] 1.732051
Dieses Ergebnis kann mit der Funktion round()
gerundet werden.
# Runde auf 2 Nachkommastellen
round(sqrt(3), digits=2)
## [1] 1.73
# Runde auf ganze Zahl
round(sqrt(3))
## [1] 2
Bitte beachten Sie, dass R mathematisch rundet (gemäß dem IEEE 754 Standard), und nicht kaufmännisch. Beim mathematischen Runden wird eine \(5\) am Ende immer auf die nächste gerade Zahl gerundet.
Dies soll folgendes Beispiel verdeutlichen:
# mathematisches Runden
round(3.5) # ergibt 4
## [1] 4
round(2.5) # ergibt 2
## [1] 2
Neben round()
existieren noch die Spezialfunktionen ceiling()
und floor()
. Die Funktion ceiling()
rundet immer zur nächsten ganzen Zahl auf, und die Funktion floor()
rundet immer zur nächsten ganzen Zahl ab. Man kann sich das so vorstellen:
floor()
auf die ganze Zahl abrunden, um zu ermitteln, wieviele Körbe Sie verkaufen können.ceiling()
auf die nächste Zahl auf, damit nach 5 vollen Flaschen auch die restlichen 65ml aufgefangen werden können (auch wenn die letzte Flasche nicht voll wird).# ceiling rundet immer auf
ceiling(sqrt(3))
## [1] 2
# ceiling rundet immer auf
ceiling(1.0008)
## [1] 2
# floor rundet immer ab
floor(sqrt(3))
## [1] 1
# floor rundet immer ab
floor(1.9999)
## [1] 1
R
nutzt die wissenschaftliche Schreibweise sehr großer und kleiner Zahlen (so genannte Zehnerpotenzen).
# erzeuge eine sehr große Zahl
987654321 * 987654321
## [1] 9.754611e+17
Um die Ergebniszahl vor der Zehnerpotenz zu runden, kann die Funktion format()
genutzt werden.
# runde vor der Zehnerpotenz
format(987654321 * 987654321, digits=2)
## [1] "9.8e+17"