You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: inst/tutorials/2a_vektoren/vl2_a_vektoren.Rmd
+16-21Lines changed: 16 additions & 21 deletions
Original file line number
Diff line number
Diff line change
@@ -25,10 +25,10 @@ library(modeest)
25
25
knitr::opts_chunk$set(echo = FALSE)
26
26
```
27
27
28
-
## Was Sie in diesem Tutorial lernen:
28
+
## Lernziele
29
29
30
30
Im letzten Tutorial hast du dich spielerisch mit der allgemeinen
31
-
Syntax von Funktionen in R beschäftigt. Dieses Tutorial baut darauf auf:
31
+
Syntax von Funktionen in R beschäftigt. Dieses Tutorial baut darauf auf und beantwortet folgende Fragen:
32
32
33
33
- Wie erstelle ich ein Objekt in R? (Assignment)
34
34
@@ -313,7 +313,7 @@ auf diese Werte! Dadurch wird das Environment mit dem Beenden von
313
313
RStudio automatisch gelöscht und nicht zwischen Sitzungen gespeichert.
314
314
:::
315
315
<br>
316
-
Das soll dazu animieren, alle Objekte die benutzen werden auch
316
+
Das soll dazu animieren, alle Objekte die benutzt werden auch
317
317
tatsächlich selbst zu definieren.
318
318
319
319
Das dient der Replizierbarkeit - Stell dir vor, du hast `x` gar
@@ -474,7 +474,7 @@ Letztlich geschieht dieser Mechanismus auch bei unserem ersten Beispiel
474
474
von Rechnen mit Vektor + Zahl (`vec + 1`), weil die Zahl eigentlich auch
475
475
nur ein Vektor der Länge 1 ist.
476
476
477
-
### Fehlermeldung
477
+
### Warnmeldung
478
478
479
479
Entsteht beim Recycling ein "Überstand", weil die beiden Vektoren keine
480
480
Vielfachen voneinander sind, wird die Berechnung trotzdem durchgeführt,
@@ -665,15 +665,9 @@ id + 1
665
665
666
666
## Typen
667
667
668
-
Als nächstes schauen wir uns die Typen und Klasse von Daten etwas genauer an.
668
+
Als nächstes schauen wir uns die Typen und Klassen von Daten etwas genauer an.
669
669
670
-
{width="40%"}
671
-
672
-
Wie es im Fantasy RPG (Role Play Game) deiner Wahl in der Regel die Auswahl aus verschiedenen Klassen (Ritter\*in, Heiler\*in, Zauber\*in etc.) und Rassen (Mensch, Elfe, Zwerg etc.) gibt haben auch in der Informatik verschiedene Klassen und Typen. **Achtung: zwar gibt es auch in anderen Programmiersprachen Klassen und Typen, doch unterscheiden diese sich ggf. von denen in R.** Das Bild von Klasse und Rasse ist rein methaphorisch für eine grundlegende Idee der Zusammenhänge zu verstehen.
673
-
674
-
Die *Datentypen* sind sowas wie die "Rasse". Also wie sieht ein Chracter aus (Zwerg, Elfe, Mensch) bzw. ein Dateneintrag aus: Zahlenart, Buchstabe, binär etc. Die *Objektklassen* entsprechen grob den "Rassen" in RPGs. Also wie sind die Charaktere organisiert: in Heiler\*innengilden, Ritter\*innenorden, Hofzauber*in etc. bzw. in Objekten: Vektor, Dataframe, Matrix etc.
675
-
676
-
Auf dem Level, auf dem wir R nutzen ist die ganz genaue Unterscheidung zwischen Typen und Klassen nicht notwendig. Nur gut, es einfach schonal gehört zu haben, da hier manchmal Probleme auftauchen die sich dann meist relativ einfach lösen lasse.
670
+
Auf dem Level, auf dem wir R nutzen ist die ganz genaue Unterscheidung zwischen Typen und Klassen nicht notwendig. Nur gut, es einfach schonal gehört zu haben, da hier manchmal Probleme auftauchen die sich dann meist relativ einfach lösen lassen.
677
671
678
672
679
673
### Typen
@@ -697,7 +691,7 @@ Sowohl `double` als auch `integer` beinhalten Zahlen. Wo ist nun der Unterschied
697
691
698
692
**Double** sind Fließkommazahlen bzw. Dezimalzahlen, auch *floating point numbers*.
699
693
700
-
**Integer** sind postive und negative ganze Zahlen sowie Null.
694
+
**Integer** sind positive und negative ganze Zahlen sowie Null.
701
695
702
696
703
697
Das ist wichtig zu erwähnen, denn das ist krass: Computer merken sich Zahlen anders als Menschen. Die meisten Menschen denken *dezimal* (also in Zehnerschritten) und Computer *binär* (die klassischen 1 und 0).
@@ -708,13 +702,18 @@ Für einen Rechner sieht eine `0.1` so aus: $0.0 \overline{0011}$.
708
702
709
703
Rechner können je nach Programmeinstellung und in sehr hardcore Fällen auch aufgrund der Hardware pro Zahl nur [23](https://de.wikipedia.org/wiki/Einfache_Genauigkeit) bzw. [52](https://de.wikipedia.org/wiki/Doppelte_Genauigkeit) binäre [signifikante Stellen](https://de.wikipedia.org/wiki/Signifikante_Stellen) berechnen. Das entspricht ca 8 bzw. 16 dezimalen Ziffern (*Siehe dazu auch dieses wunderbare [Video](https://www.youtube.com/watch?v=PZRI1IfStY0)). Danach wird die Zahl einfach abgeschnitten - mit fatalen Folgen.
710
704
705
+
::: infobox
706
+
R kann erst mal "nur" 16 Dezimalstellen nach dem Komma genau berechnen (vorausgesetzt, du befindest dich nicht auf uralter Hardware mit 32-Bit, dann wären es 8). Wenn mehr Präzision benötigt wird, können dafür aber problemlos spezielle Pakete verwendet werden.
707
+
:::
708
+
709
+
<br>
711
710
<details>
712
711
<summary><a>▼ \* Rumgenerde bzgl. des Datentyps double.
713
712
</a></summary>
714
713
715
-
Ob 23 oder 52 binäre signifikante Stellen hat was mit einen Programmeinstellungen zu tun. Du wurdest beim Runterladen gefragt, ob du eine 32 oder 64 bit Version von R möchtest und du wirst 64 gewählt haben. Im grunde hast du da ausgewählt, wie Präzise R Zahlen abbilden kann. Falls du das gegenchecken möchtest, tippe `sessionInfo()` in deine Konsole. In der zweiten Reihe steht hinter `Platform:` dein Betriebssystem sowie die Zahl der Bits, für die du dich entschieden hast.
714
+
Ob 23 oder 52 binäre signifikante Stellen hat was mit einen Programmeinstellungen zu tun. Du wurdest beim Runterladen gefragt, ob du eine 32 oder 64 bit Version von R möchtest und du wirst 64 gewählt haben. Im grunde hast du da ausgewählt, wie präzise R Zahlen abbilden kann. Falls du das gegenchecken möchtest, tippe `sessionInfo()` in deine Konsole. In der zweiten Reihe steht hinter `Platform:` dein Betriebssystem sowie die Zahl der Bits, für die du dich entschieden hast.
716
715
717
-
Das Format von Zahlen, die mit 32 Bit gespeichert sind heißt auch *"Single-precision floating-point format"*. Das wird dir in der freien Wilbahn eher nicht begegnen. Das Format von mit 64 Bit gespeicherte Daten heißt *"Double-precision floating-point format"*. Hier schließt sich der Kreis, dennn exakt das sagt der Datentyp **double`**.
716
+
Das Format von Zahlen, die mit 32 Bit gespeichert sind heißt auch *"Single-precision floating-point format"*. Das wird dir in der freien Wildbahn eher nicht begegnen. Das Format von mit 64 Bit gespeicherte Daten heißt *"Double-precision floating-point format"*. Hier schließt sich der Kreis, dennn exakt das sagt der Datentyp **double`**.
718
717
719
718
Für den Alltag reicht zu merken: **double** bedeutet Kommazahl (mit einer bestimmten Präziszion).
720
719
@@ -873,15 +872,11 @@ Beide Typen sind mir in meiner kompletten R Laufbahn noch nie in der Praxis übe
873
872
874
873
#### Zusammenfassung Typen
875
874
876
-
Nochmal zusammengefasst: Es gibt 6 Datentypen (2 numerische: `double` (mit Komma), `integer` (ohne Komma), Buchstaben (`character`), logische Werte (`logical`), Zahlen, die genau genommen keine richtigen Zahlen sind (`complex`) und irgendwie komisch dargestellte binärcodes (`raw`)). Welchen Typ die Daten haben kann mit der Funktio`typeof()` in Erfahrung gebracht werden und unter bestimmten Voraussetzungen lassen sich die Typen auch ineinander übersetzen `as.neuertyp()`. Ob ein bestimmter Typ vorliegt, findest du mit `is.datentyp()` heraus.
875
+
Nochmal zusammengefasst: Es gibt 6 Datentypen (2 numerische: `double` (mit Komma), `integer` (ohne Komma), Buchstaben (`character`), logische Werte (`logical`), Zahlen, die genau genommen keine richtigen Zahlen sind (`complex`) und irgendwie komisch dargestellte binärcodes (`raw`)). Welchen Typ die Daten haben kann mit der Funktion`typeof()` in Erfahrung gebracht werden und unter bestimmten Voraussetzungen lassen sich die Typen auch ineinander übersetzen `as.neuertyp()`. Ob ein bestimmter Typ vorliegt, findest du mit `is.datentyp()` heraus.
877
876
878
877
## Klassen
879
878
880
-
Nun sind die Typen der der Daten ("Rasse" im RPG) dir bereits ein Begriff. Fehlt noch die Klasse.
881
-
882
-
Hier fängt das Beispiel mit den RPGs an, etwas zu hinken. Denn nicht *Daten* haben eine Klasse, sondern *Objekte*. Daten sind allerdings **in** Objekten gespeichert.
883
-
884
-
Es gibt sehr viele Klassen in R und manche Funktionen funktionieren oder funktionieren nicht oder werfen andere Ergebnisse aus, abhängig davon, in welcher Klasse von Objekt die Daten stecken. Häufig werden Klassen explizit festgelegt. Wenn das nicht der Fall ist, haben die Objekte ein implizites Klassenattribut und manchmal einfach den Datentyp.
879
+
Es gibt sehr viele Klassen in R. Und manche Funktionen funktionieren oder funktionieren nicht oder werfen andere Ergebnisse aus, abhängig davon, in welcher Klasse von Objekt die Daten stecken. Häufig werden Klassen explizit festgelegt. Wenn das nicht der Fall ist, haben die Objekte ein implizites Klassenattribut und manchmal einfach den Datentyp.
885
880
886
881
Klingt kompliziert? Ist es auch. Und das ist total okay. Wir bringen gemeinsam Schritt für Schritt etwas Licht ins Dunkel.
0 commit comments