Datentypen in R mit Beispiel
โก Intelligente Zusammenfassung
Datentypen in R definieren, wie Werte im Speicher abgelegt werden, und Operatoren legen fest, was R mit ihnen tun kann. Vektoren, Variablen, arithmetische, relationale, logische und Zuweisungsoperatoren werden hier anhand von ausfรผhrbaren Beispielen behandelt.
Was sind die Datentypen in R?
Im Folgenden sind die Datentypen oder Datenstrukturen in der R-Programmierung aufgefรผhrt:
- Skalare
- Vektoren (numerisch, zeichenhaft, logisch)
- Matrizen
- Datenrahmen
- Listen
Diese Liste vermischt zwei verwandte Ideen; durch deren Trennung wird der Rest dieser Seite รผbersichtlicher. Datentyp Beschreibt, was ein einzelner Wert ist โ eine Zahl, ein Textabschnitt, ein WAHR oder ein FALSCH. Datenstruktur Beschreibt, wie viele Werte zusammengefasst sind und welche Form sie haben. Skalare, Vektoren, Matrizen, Dataframes und Listen sind Strukturen; die darin enthaltenen Werte gehรถren dennoch zu einem der grundlegenden Datentypen von R.
| Struktur | Abmessungen | Gemischte Typen erlaubt? | Typische Verwendung |
|---|---|---|---|
| Scalar | Vektor der Lรคnge 1 | Nein | Eine einzelne Messung oder Flagge |
| Vector | 1 | Nein | Eine Spalte mit Messwerten eines Typs |
| Matrix | 2 | Nein | Numerische Gitter und lineare Algebra |
| Datenrahmen | 2 | Ja, ein Typ pro Spalte | Tabellarische Datensรคtze |
| Liste | 1, aber verschachtelbar | Ja, alles pro Element. | Modellergebnisse und gemischte Behรคlter |
R kennt keinen separaten Skalar-Typ: Ein Skalar ist einfach ein Vektor der Lรคnge eins, weshalb so viel R-Code fรผr ganze Vektoren auf einmal geschrieben wird.
Grundlegende Datentypen in R
Jeder Wert in R gehรถrt zu einem von wenigen Basistypen (atomaren Typen):
- 4.5 ist ein Dezimalwert, der als numerisch bezeichnet wird.
- 4 sieht zwar aus wie eine ganze Zahl, aber R speichert sie trotzdem als Gleitkommazahl. Schreiben Sie 4L, wenn eine echte ganze Zahl benรถtigt wird.
- WAHR oder FALSCH ist ein boolescher Wert, in R als logischer Wert bezeichnet.
- Der Wert innerhalb von "" oder ' ' ist Text (eine Zeichenkette). Diese Werte werden Zeichen genannt.
Zwei weitere Typen vervollstรคndigen die Menge. Komplexe Werte wie 3 + 2i enthalten einen Real- und einen Imaginรคrteil, und Rohwerte enthalten Bytes. Beide kommen in der alltรคglichen Datenanalyse selten vor, sind aber in der Basis R aufgefรผhrt. typeof()-Dokumentation neben den vier gรคngigen Typen.
| Typ | Beispielwert | class() gibt zurรผck | typeof() gibt zurรผck |
|---|---|---|---|
| logisch | TRUE | logisch | logisch |
| ganze Zahl | 4L | ganze Zahl | ganze Zahl |
| Double (numerisch) | 4.5 | numerisch | doppelt |
| Charakter | "R ist fantastisch" | Charakter | Charakter |
| Complex | 3+2i | Komplex | Komplex |
| Roh | as.raw(10) | roh | roh |
Mit der Klassenfunktion kรถnnen wir den Typ einer Variablen รผberprรผfen.
Beispiel 1: รberprรผfung einer numerischen Variable
# Declare variables of different types # Numeric x <- 28 class(x)
Ausgang:
## [1] "numeric"
Beispiel 2: รberprรผfen einer Zeichenvariablen
# String y <- "R is Fantastic" class(y)
Ausgang:
## [1] "character"
Beispiel 3: รberprรผfung einer logischen Variable
# Boolean z <- TRUE class(z)
Ausgang:
## [1] "logical"
Beachten Sie, dass `class()` fรผr 28 โnumerischโ zurรผckgibt, obwohl 28 keine Nachkommastellen hat. R speichert den Wert als Gleitkommazahl (double), und nur `typeof()` zeigt dies an. Der nรคchste wichtige Unterschied betrifft die Benennung dieser Werte.
Variablen in R
Variablen gehรถren zu den grundlegenden Bausteinen in R, die Werte speichern, und sind fรผr jeden, der im Bereich Data Science arbeitet, von Bedeutung. Eine Variable in R kann eine Zahl, ein Objekt, ein statistisches Ergebnis, einen Vektor, einen Datensatz oder eine Modellvorhersage speichern โ im Grunde alles, was R ausgibt. Wir kรถnnen diese Variable spรคter einfach durch Aufruf ihres Namens verwenden.
Um in R eine Variable zu deklarieren, muss ihr ein Name zugewiesen werden. Dieser Name darf keine Leerzeichen enthalten. Zwei Wรถrter kรถnnen mit einem Unterstrich (_) verbunden werden.
Variablennamen dรผrfen Buchstaben, Ziffern, Punkte und Unterstriche enthalten, mรผssen aber mit einem Buchstaben oder einem Punkt beginnen. Reservierte Wรถrter wie TRUE, FALSE und NULL sind als Namen nicht zulรคssig. Um einer Variablen einen Wert zuzuweisen, verwenden Sie <- oder =.
Hier ist die Syntax:
# First way to declare a variable: use the `<-` name_of_variable <- value # Second way to declare a variable: use the `=` name_of_variable = value
In die Befehlszeile kรถnnen wir die folgenden Codes schreiben, um zu sehen, was passiert:
Beispiel 1: Einen Wert zuweisen und ausgeben
# Print variable x
x <- 42
x
Ausgang:
## [1] 42
Beispiel 2: Eine zweite Variable deklarieren
y <- 10 y
Ausgang:
## [1] 10
Beispiel 3: Zwei Variablen in einem Ausdruck verwenden
# We call x and y and apply a subtraction
x-y
Ausgang:
## [1] 32
Eine Variable, die mehrere Werte vom gleichen Typ enthรคlt, ist ein Vektor. Dies ist die Struktur, die fast jede R-Funktion erwartet.
Vektoren in R
Ein Vektor ist eine eindimensionale Sammlung, deren Elemente alle vom gleichen Typ sind. Wir kรถnnen einen Vektor mit allen grundlegenden R-Datentypen erstellen, die wir bereits kennengelernt haben. Am einfachsten lรคsst sich ein Vektor in R mit der Funktion `c()` erstellen.
Beispiel 1: Erstellen eines numerischen Vektors
# Numerical
vec_num <- c(1, 10, 49)
vec_num
Ausgang:
## [1] 1 10 49
Beispiel 2: Erstellen eines Zeichenvektors
# Character vec_chr <- c("a", "b", "c") vec_chr
Ausgang:
## [1] "a" "b" "c"
Beispiel 3: Erstellen eines logischen Vektors
# Boolean vec_bool <- c(TRUE, FALSE, TRUE) vec_bool
Ausgang:
##[1] TRUE FALSE TRUE
Wenn c() verschiedene Datentypen empfรคngt, schlรคgt die Funktion nicht fehl. Sie wandelt jedes Element stillschweigend in den allgemeinsten vorhandenen Datentyp um, sodass c(1, "a", TRUE) zu einem Zeichenvektor wird. In R sind auch arithmetische Berechnungen mit Vektoren mรถglich.
Beispiel 4: Zwei Vektoren elementweise addieren
# Create the vectors vect_1 <- c(1, 3, 5) vect_2 <- c(2, 4, 6) # Take the sum of A_vector and B_vector sum_vect <- vect_1 + vect_2 # Print out total_vector sum_vect
Ausgang:
[1] 3 7 11
Die Addition erfolgte elementweise, da beide Vektoren die gleiche Lรคnge haben. Bei unterschiedlichen Lรคngen verwendet R den kรผrzeren Vektor erneut, bis er mit dem lรคngeren รผbereinstimmt, und gibt nur dann eine Warnung aus, wenn die Lรคnge des lรคngeren Vektors kein Vielfaches der kรผrzeren ist.
Beispiel 5: Die ersten fรผnf Elemente aufteilen
In R ist es mรถglich, einen Vektor zu segmentieren. Manchmal sind wir nur an den ersten fรผnf Elementen eines Vektors interessiert. Wir kรถnnen den Befehl [1:5] verwenden, um diese Segmente zu extrahieren.tract die Werte 1 bis 5.
# Slice the first five rows of the vector
slice_vector <- c(1,2,3,4,5,6,7,8,9,10)
slice_vector[1:5]
Ausgang:
## [1] 1 2 3 4 5
Beispiel 6: Erstellen eines Bereichs mit dem Doppelpunkt OperaDo.
Die kรผrzeste Methode, einen Wertebereich zu erstellen, ist die Verwendung des Doppelpunktoperators (:) zwischen zwei Zahlen. Beispielsweise kรถnnen wir im obigen Beispiel c(1:10) schreiben, um einen Vektor mit den Werten von eins bis zehn zu erzeugen.
# Faster way to create adjacent values
c(1:10)
Ausgang:
## [1] 1 2 3 4 5 6 7 8 9 10
Da sich der Typ eines Vektors beim Mischen stillschweigend รคndert, lohnt es sich, zu wissen, wie man Typen bei Bedarf รผberprรผft und konvertiert.
Wie man Datentypen in R prรผft und konvertiert
Drei Funktionsfamilien beantworten die drei immer wiederkehrenden Fragen: Was ist das? Ist das ein vorgegebener Typ? Und kann das zu einem anderen Typ werden?
| Funktionsfamilie | Fragen, die es beantwortet | Beispiele |
|---|---|---|
| class(), typeof(), mode() | Um welchen Datentyp handelt es sich bei diesem Wert? | class(28), typeof(28), mode(28) |
| Ist.*() | Ist dieser Wert vom Typ X? | is.numeric(), is.character(), is.logical() |
| als.*() | Kann dieser Wert vom Typ X werden? | as.numeric(), as.character(), as.integer() |
| str () | Wie sieht dieses Objekt insgesamt aus? | str(vec_num) |
# Three different views of the same value x <- 28 class(x) # "numeric" -- the class used for method dispatch typeof(x) # "double" -- how R stores the value internally mode(x) # "numeric" -- the older S-style mode # Ask a yes/no question about a type is.numeric(x) # TRUE is.character(x) # FALSE # Convert between types as.character(x) # "28" as.integer("28") # 28 stored as an integer as.numeric("abc") # NA, with a coercion warning
Zwei Regeln erklรคren die meisten รberraschungen hier. Erstens: `class()` gibt die fรผr die Methodenaufrufe verwendete Klasse zurรผck, wรคhrend `typeof()` den internen Speicher zurรผckgibt. Daher ist 28 fรผr den einen Typ โnumerischโ und fรผr den anderen โdoubleโ. Zweitens: Eine fehlgeschlagene Konvertierung fรผhrt nicht zum Abbruch des Skripts: `as.numeric("abc")` gibt NA zurรผck und gibt eine Typumwandlungswarnung aus. Daher deuten stille NA-Werte nach einem Import fast immer auf ein Typproblem hin. Dieselbe Logik treibt โฆ Faktoren, die Kategorien als ganzzahlige Codes plus eine Tabelle von Stufen speichern.
Nachdem die Datentypen festgelegt sind, geht es als nรคchstes um die Operatoren, die auf diese Datentypen angewendet werden.
R Arithmetik Operatoren
Zunรคchst betrachten wir die grundlegenden arithmetischen Operatoren in R. Im Folgenden sind die arithmetischen Operatoren in der R-Programmierung und ihre Bedeutung aufgefรผhrt:
| OperaDo. | Beschreibung |
|---|---|
| + | Zusatz |
| - | SubtracProduktion |
| * | Vervielfรคltigen |
| / | Anwendungen |
| ^ oder ** | Potenzierung |
| %% | Modulo (Rest nach der Division) |
| %/% | Ganzzahldivision (Quotient, Rest verworfen) |
Jeder dieser Operatoren ist vektorisiert, sodass derselbe Ausdruck sowohl auf einen einzelnen Wert als auch auf eine ganze Spalte angewendet werden kann.
Beispiel 1: Addition
# An addition
3 + 4
Ausgang:
## [1] 7
Sie kรถnnen den obigen R-Code einfach kopieren und einfรผgen in den RStudio Konsole. In diesem Artikel wird die Ausgabe in Zeilen angezeigt, die mit ## beginnen. Wenn wir beispielsweise den Code print(" schreibenGuru99") gibt die Konsole [1] aus.Guru99", was auf dieser Seite als ## [1] angezeigt wรผrde.Guru99. "
Das ## kennzeichnet eine Zeile der gedruckten Ausgabe, und die Zahl in der eckigen Klammer ([1]) ist der Index des ersten Wertes in dieser Zeile und nicht Teil des Ergebnisses.
Sรคtze, die mit # beginnen, sind Kommentare. Wir kรถnnen # innerhalb eines R-Skripts verwenden, um beliebige Anmerkungen hinzuzufรผgen, und R ignoriert diese zur Laufzeit.
Beispiel 2: Multiplikation
# A multiplication
3*5
Ausgang:
## [1] 15
Beispiel 3: Division
# A division
(5+5)/2
Ausgang:
## [1] 5
Beispiel 4: Potenzierung
# Exponentiation
2^5
Ausgang:
## [1] 32
Beispiel 5: Modulo
# Modulo
28%%6
Ausgang:
## [1] 4
Arithmetische Operationen erzeugen Zahlen. Die nรคchste Gruppe von Operatoren erzeugt stattdessen WAHR und FALSCH.
R Relational (Comparative) Operatoren
Relationale Operatoren vergleichen zwei Werte und geben ein logisches Ergebnis zurรผck. Sie sind die Operatoren, die die fรผr die Filterung verwendeten Bedingungen erstellen, und sie werden auf genau die gleiche Weise vektorisiert wie die arithmetischen Operatoren.
| OperaDo. | Beschreibung |
|---|---|
| > | Grรถรer als |
| < | Less als |
| >= | Grรถรer als oder gleich wie |
| <= | Less als oder gleich |
| == | Genau gleich |
| != | Nicht gleichzusetzen mit |
a <- 10 b <- 3 a > b # TRUE a < b # FALSE a >= 10 # TRUE a <= 3 # FALSE a == b # FALSE a != b # TRUE # Relational operators are vectorised scores <- c(45, 78, 90, 62) scores >= 60 # FALSE TRUE TRUE TRUE
Zwei Gewohnheiten sparen hier Zeit. Verwenden Sie == fรผr Vergleiche und <- fรผr Zuweisungen, da ein einzelnes = innerhalb einer Bedingung ein hรคufiger Anfรคngerfehler ist. Vermeiden Sie auรerdem == bei Gleitkommazahlen: Durch die Rundung von Gleitkommazahlen ist 0.1 + 0.2 == 0.3 FALSE, daher ist isTRUE(all.equal(0.1 + 0.2, 0.3)) die sichere Methode. Vergleiche auf sortierte Datenrahmen Befolgen Sie die gleichen Regeln.
R Logisch Operatoren
Mithilfe logischer Operatoren mรถchten wir Werte innerhalb eines Vektors basierend auf logischen Bedingungen zurรผckgeben. Die folgende Tabelle listet die in R verfรผgbaren logischen Operatoren auf.
Logische Anweisungen in R werden in eckige Klammern [] eingeschlossen. Wir kรถnnen beliebig viele bedingte Anweisungen hinzufรผgen, diese mรผssen jedoch in Klammern gesetzt werden. Eine bedingte Anweisung kann folgendermaรen aufgebaut sein:
variable_name[(conditional_statement)]
Mit `variable_name` bezeichnen wir die Variable, die wir fรผr die Anweisung verwenden mรถchten. Wir erstellen die logische Anweisung, zum Beispiel `variable_name > 0`. Abschlieรend setzen wir die eckigen Klammern, um die logische Anweisung abzuschlieรen. Nachfolgend finden Sie ein Beispiel fรผr eine logische Anweisung.
Beispiel 1: Vergleich jedes Elements eines Vektors
# Create a vector from 1 to 10
logical_vector <- c(1:10)
logical_vector>5
Ausgang:
## [1]FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE
In der obigen Ausgabe liest R jeden Wert und vergleicht ihn mit der Bedingung `logical_vector>5`. Ist der Wert grรถรer als fรผnf, ist die Bedingung WAHR, andernfalls FALSCH. R gibt einen Vektor mit den Werten WAHR und FALSCH zurรผck.
Beispiel 2: Nur die passenden Elemente behalten
Im folgenden Beispiel mรถchten wir extracWir wรคhlen die Werte aus, die die Bedingung โist strikt grรถรer als fรผnfโ erfรผllen. Dazu setzen wir die Bedingung in eckige Klammern, denen der Vektor mit den Werten vorangestellt wird.
# Print value strictly above 5
logical_vector[(logical_vector>5)]
Ausgang:
## [1] 6 7 8 9 10
Beispiel 3: Zwei Bedingungen kombinieren
# Print 5 and 6
logical_vector <- c(1:10)
logical_vector[(logical_vector>4) & (logical_vector<7)]
Ausgang:
## [1] 5 6
Beispiel 3 verwendet absichtlich das einzelne kaufmรคnnische Und-Zeichen (&). Die einstelligen Operatoren & und | vergleichen Vektoren elementweise und geben einen Vektor zurรผck, was fรผr die Teilmengenbildung erforderlich ist. Die doppelten Formen && und || geben einen Wert zurรผck und gehรถren in if()- und while()-Bedingungen. R4.3.0Die รbergabe eines Arguments mit mehr als einem Element an && oder || fรผhrt zu einem Fehler und nicht zu einer Warnung; daher sind die beiden Operatorfamilien nicht mehr austauschbar. Der !-Operator negiert eine Bedingung, und xor() fรผhrt ein exklusives ODER durch.
R-Zuweisung Operatoren
Zuweisungsoperatoren binden einen Wert an einen Namen. R bietet mehr davon als die meisten anderen Sprachen, und die Unterschiede spielen eine Rolle, sobald der Code in die Syntax verschoben wird. Funktionen.
| OperaDo. | Beschreibung |
|---|---|
| <- | Linke Zuweisung, die idiomatische Wahl in R |
| = | Linkszuweisung, normalerweise aber fรผr Funktionsargumente reserviert. |
| -> | Richtige Zuordnung, gรผltig, aber selten verwendet |
| <<- | Superassignment, das umschlieรende Umgebungen durchsucht |
| - >> | Rechte Superzuweisung |
# Left assignment -- the idiomatic form count <- 5 # Equals sign: works, but reserve it for function arguments count = 5 round(3.14159, digits = 2) # Right assignment 5 -> count # Superassignment, used inside functions to reach an outer scope count <<- 5
Stilrichtlinien empfehlen <- zum Erstellen von Objekten und = zum Benennen von Argumenten innerhalb eines Funktionsaufrufs, da die beiden Rollen so visuell unterscheidbar bleiben. Verwenden Sie <<- sparsam: Es verรคndert ein Objekt auรerhalb der aktuellen Funktion und erschwert das Verstรคndnis des Codes. Sobald Sie mit Zuweisungen und Typen vertraut sind, folgen die nรคchsten Schritte. Importieren von Echtzeitdaten und Reshaping es mit dplyr; das R-Sprachรผbersicht setzt die gesamte Toolkette in den Kontext.

