English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

R-Datentypen

Datenart ist ein breites System zur Deklaration verschiedener Typen von Variablen oder Funktionen.

Der Typ einer Variable bestimmt den Speicherplatz, den sie belegt, und wie der gespeicherte Bitmuster interpretiert wird.

Die grundlegenden Datentypen in R gibt es hauptsächlich drei Arten:

  • Zahlen

  • Logisch

  • Text

Digitale Konstanten gibt es hauptsächlich zwei Arten:

Allgemein123    -0.125
Wissenschaftliche Notation1.23e2    -1.25E-1

Logische Typen werden in vielen anderen Programmiersprachen oft als Boolean-Typen bezeichnet, die Konstantenwerte sind nur TRUE und FALSE.

Jeder Element des Vektors kann über den Index einzeln ausgelesen werden:R unterscheidet zwischen Groß- und Kleinschreibung, true oder True kann nicht TRUE darstellen.

Der direkteste Datentyp ist der Texttyp. Text ist wie in anderen Sprachen häufig出现的字符串(String), Konstanten werden in doppelten Anführungszeichen enthalten. In R können Textkonstanten sowohl in einfacheren als auch in doppelten Anführungszeichen enthalten sein, zum Beispiel:

> 'w3codebox' == "w3codebox"
[1] TRUE

Die Variablendefinitionen in R unterscheiden sich von den Syntaxregeln einiger stark typisierter Sprachen, bei denen keine spezifischen Namen und Datentypen für Variablen festgelegt werden müssen. Jedes Mal, wenn im R ein Zuweisungsoperator verwendet wird, wird实际上 eine neue Variable definiert:

a = 1
b <- TRUE
b = "abc"

Nach Objekttypen unterteilt sind die folgenden 6 arten (dies wird später im Detail erläutert):

Vektor

Vektoren (Vector) werden in den Standardbibliotheken von Sprachen wie Java, Rust und C# oft bereitgestellt, da Vektoren in mathematischen Operationen unentbehrlich sind - die häufigsten Vektoren sind zweidimensionale Vektoren, die in der plane Koordinatensystem unbedingt verwendet werden.

Ein Vektor ist aus datenstruktureller Sicht eine lineare Liste und kann als Array betrachtet werden.

In R ermöglicht die Existenz von Vektoren als einem eigenen Typ die einfache Durchführung von Vektorenberechnungen:

> a = c(3, 4)
> b = c(5, 0)
> a + b
[1] 8 4
>

c() ist eine Funktion zum Erstellen von Vektoren.

Hier werden zwei zweidimensionale Vektoren addiert, um einen neuen zweidimensionalen Vektor zu erhalten (8, 4Wenn eine zweidimensionale und eine dreidimensionale Vektoroperation durchgeführt wird, wird der mathematische Sinn verloren gehen, obwohl das Programm nicht abgebrochen wird, aber eine Warnung ausgegeben wird.

我建议大家从习惯上杜绝这种情况的出现。

Ich empfehle, diese Situation aus Gewohnheit zu vermeiden.

> a = c(10, 20, 30, 40, 50)
R kann auch einfach einen Teil des Vektors auswählen:2]
[1] 20

Jeder Element des Vektors kann über den Index einzeln ausgelesen werden:Beachten Sie: 1 Die "Index" in der R-Sprache bedeutet nicht Verschiebungsgröße, sondern das, was für welche ist, also von

Anfang!

R kann auch einfach einen Teil des Vektors auswählen:1:4> a[ 1 bis 4 ] # nehmen Sie das 1 und der 4 Element
[1] 10 20 30 40
> a[c(1, 3, 5)) # nehmen Sie das 1, 3, 5 Element
[1] 10 30 50
> a[c(-1, -5) # entfernen Sie den 1 und der 5 Element
[1] 20 30 40

Diese drei Methoden zur Auswahl eines Teils des Vektors sind die häufigsten.

Vektoren unterstützen skalare Berechnungen:

> c(1.1, 1.2, 1.3) - 0.5
[1> 0.6 0.7 0.8
> a = c(1,2)
> a ^ 2
[1] 1 4

Die in den vorherigen Abschnitten erwähnten gängigen mathematischen运算funktionen, wie sqrt, exp, etc., können ebenfalls zur Skalarrechnung mit Vektoren verwendet werden.

"Vektor" als lineare Struktur sollte einige gängige Funktionen zur Verarbeitung von linearen Listen haben, und R besitzt tatsächlich diese Funktionen:

Vektor排序:

> a = c(1, 3, 5, 2, 4, 6)
> sort(a)
[1] 1 2 3 4 5 6
> rev(a)
[1] 6 4 2 5 3 1
> order(a)
[1] 1 4 2 5 3 6
> a[order(a)]
[1] 1 2 3 4 5 6

Die Funktion order() gibt ein Vektorindexvektor zurück, der nach dem Sortieren des Vektors generiert wird.

Vektorstatistik

In R gibt es eine sehr vollständige Sammlung von statistischen Funktionen:

FunktionnameBedeutung
sumSumme berechnen
meanDurchschnittswert berechnen
varVariance
sdStandardabweichung
minKleinsten Wert
maxGrößter Wert
rangeBereichswerte (zweidimensionaler Vektor, größter und kleinsten Wert)

Vektorstatistikbeispiel:

> sum(1:5)
[1] 15
> sd(1:5)
[1] 1.581139
> range(1:5)
[1] 1 5

Vektorerstellung

Die Erstellung eines Vektors kann mit c() durch die Funktion generiert werden oder auch durch den min:max-Betriebszeichen, um eine kontinuierliche Sequenz zu erzeugen.

Um arithmetische Progressionsfolgen mit Lücken zu generieren, kann seq verwendet werden Funktion:

> seq(1, 9, 2)
[1] 1 3 5 7 9

seq kann auch arithmetische Progressionsfolgen von m bis n generieren, indem nur m, n und die Länge der Progressionsfolge angegeben werden:

> seq(0, 1, length.out=3)
[1> 0.0 0.5 1.0

rep bedeutet repeat (wiederholen) und kann zur Erstellung wiederkehrender Nummernfolgen verwendet werden:

> rep(0, 5)
[1NA NA NA NA NA

NA und NULL werden in Vektoren oft verwendet. Hier wird die Unterscheidung zwischen diesen beiden Begriffen erläutert:

  • NA bedeutet "fehlend", NULL bedeutet "nicht existent".

  • NA fehlt, wie ein Platzhalter, bedeutet, dass hier kein Wert vorhanden ist, aber der Platz existiert.

  • NULL stellt die Nichtexistenz von Daten dar.

Beispiel

> length(c(NA, NA, NULL))
[1] 2
> c(NA, NA, NULL, NA)
[1NA NA NA

Es ist offensichtlich, dass NULL in einer Vektor keine Bedeutung hat.

logische

Logische Vektoren werden hauptsächlich für die logischen Operationen von Vektoren verwendet, z.B.:

> c(1, 2, 3) > 2
[1] FALSE FALSE  TRUE

Die Funktion which ist eine sehr häufige Funktion zur Verarbeitung von logischen Vektoren, die zur Auswahl der Indizes der benötigten Daten verwendet werden kann:

> a = c(1, 2, 3)
> b = a > 2
> print(b)
[1] FALSE FALSE  TRUE
> which(b)
[1] 3

Zum Beispiel müssen wir aus einer linearen Liste筛选大于等于 60 und kleiner als 70 的 Daten:

> vector = c(10, 40, 78, 64, 53, 62, 69, 70)
> print(vector[which(vector >= 60 & vector < 70)])
[1] 64 62 69

ähnliche Funktionen gibt es auch all und any:

> all(c(TRUE, TRUE, TRUE))
[1] TRUE
> all(c(TRUE, TRUE, FALSE))
[1] FALSE
> any(c(TRUE, FALSE, FALSE))
[1] TRUE
> any(c(FALSE, FALSE, FALSE))
[1] FALSE

all() wird verwendet, um zu überprüfen, ob die logische Vektor alle TRUE sind, any() wird verwendet, um zu überprüfen, ob die logische Vektor TRUE enthält.

Zeichenkette

Die Datenart der Zeichenkette selbst ist nicht komplex, hier wird der Fokus auf die Operationen der Zeichenkettenfunktion gelegt:

> toupper("w3codebox") # In Großbuchstaben umwandeln
[1] "w3codebox"
> tolower("w3codebox") # In Kleinbuchstaben umwandeln
[1] "w3codebox"
> nchar("中文", type="bytes") # Byte-Länge zählen
[1] 4
> nchar("中文", type="char") # Gesamtzahl der Zeichen
[1] 2
> substr("123456789", 1, 5) # Zeichenkette abschneiden, von 1 bis 5
[1] "12345"
> substring("1234567890", 5) # Zeichenkette abschneiden, von 5 bis zum Ende
[1] "567890"
> as.numeric("12") # Zeichenkette in Zahl umwandeln
[1] 12
> as.character(12.34) # Zahl in Zeichenkette umwandeln
[1] "12.34"
> strsplit("2019;10;1", ";") # Trennzeichen zur Aufteilung der Zeichenkette
[[1]]
[1] "2019" "10"   "1"
> gsub("/", "-", "2019/10/1") # Ersetze Zeichenkette
[1] "2019-10-1"

Auf Computern unter Windows implementiert, wird das GBK-Kodierungsstandard verwendet, daher sind zwei Bytes für ein chinesisches Zeichen, wenn es in UTF-8 Der auf einem kodierten Computer ausgeführte, die Byte-Länge eines einzigen chinesischen Zeichens sollte sein 3.

R unterstützt Perl-Format-Reguläre Ausdrücke:

> gsub("[[:alpha:]]+", "$", "Two words")
[1] "$ $"

Mehr Stringinhalte siehe:R-Sprach-String-Einführung.

Matrix

R bietet eine Matrix-Typ für die Forschung in der linearen Algebra, diese Datenstruktur ähnelt stark den Zweidimensionalen Arrays anderer Sprachen, aber R bietet Unterstützung für Matrixoperationen auf Sprachniveau.

Zunächst sehen wir die Erstellung der Matrix:

> vector=c(1, 2, 3, 4, 5, 6)
> matrix(vector, 2, 3)
     [1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

Der Inhalt der Matrixinitialisierung wird durch einen Vektor übergeben, der ausdrückt, wie viele Zeilen und Spalten die Matrix hat.

Die Werte in einem Vektor werden Spalte für Spalte in die Matrix gefüllt. Wenn man zeilenweise füllen möchte, muss das Attribut byrow angegeben werden:

> matrix(vector, 2, 3, byrow=TRUE)
     [1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6

Jeder Wert in der Matrix kann direkt aufgerufen werden:

> m1 = matrix(vector, 2, 3, byrow=TRUE)
> m1[1,1] # der 1 Zeile 第 1 Spalte 
[1] 1
> m1[1,3] # der 1 Zeile 第 3 Spalte
[1] 3

In R kann jeder Spalte und jeder Zeile einer Matrix ein Name zugewiesen werden, dieser Prozess wird durch einen String-Vector in Massen abgeschlossen:

> colnames(m1) = c("x", "y", "z")
> rownames(m1) = c("a", "b")
> m1
  x y z
a 1 2 3
b 4 5 6
> m1["a", ]
x y z 
1 2 3

Die arithmetischen Operationen von Matrizen sind im Wesentlichen mit Vektoren identisch, sowohl mit Skalaren als auch mit Matrizen derselben Größe in entsprechenden Positionen.

Matrixmultiplikation:

> m1 = matrix(c(1, 2), 1, 2)
> m2 = matrix(c(3, 4), 2, 1)
> m1 %*% m2
     [1]
[1,]   11

Inverser Matrix:

> A = matrix(c(1, 3, 2, 4), 2, 2)
> solve(A)
     [1] [,2]
[1,] -2.0  1.0
[2,]  1.5 -0.5

Die apply() -Funktion kann jede Zeile oder Spalte einer Matrix als Vektor behandeln und Operationen durchführen:

> (A = matrix(c(1, 3, 2, 4), 2, 2))
     [1] [,2]
[1,]    1    2
[2,]    3    4
> apply(A, 1, sum) # zweiter Parameter 1 Zeilenoperation, mit sum() Funktion
[1] 3 7
> apply(A, 2, sum) # zweiter Parameter 2 Spaltenoperation
[1] 4 6

Mehr Matrixinhalte siehe:R-Matrizen.