Suche…


Einführung

Die Klasse eines Datenobjekts bestimmt, welche Funktionen seinen Inhalt verarbeiten. Das class ist ein Zeichenvektor, und Objekte können null, eine oder mehrere Klassen haben. Wenn kein Klassenattribut vorhanden ist, gibt es immer noch eine implizite Klasse, die vom mode eines Objekts bestimmt wird. Die Klasse kann mit der Funktion überprüft werden class und es kann durch die Menge oder modifiziert werden class<- Funktion. Das S3-Klassensystem wurde bereits in der Geschichte von S etabliert. Das komplexere S4-Klassensystem wurde später eingeführt

Bemerkungen

Es gibt mehrere Funktionen, um den "Typ" eines Objekts zu prüfen. Die nützlichste solche Funktion ist die class , obwohl manchmal der mode eines Objekts untersucht werden muss. Da wir über "Typen" sprechen, könnte man denken, dass typeof nützlich sein würde, im Allgemeinen ist das Ergebnis des mode jedoch nützlicher, da für Objekte ohne explizites "class" -Attribut der Funktions-Dispatch durch die "implizite Klasse" bestimmt wird von ihrem Modus.

Vektoren

Die einfachste in R verfügbare Datenstruktur ist ein Vektor. Sie können mit der Funktion c() Vektoren aus numerischen Werten, logischen Werten und Zeichenketten erstellen. Zum Beispiel:

c(1, 2, 3)
## [1] 1 2 3
c(TRUE, TRUE, FALSE)
## [1]  TRUE  TRUE FALSE
c("a", "b", "c")
## [1] "a" "b" "c"

Sie können auch mit der Funktion c() Verknüpfung zu Vektoren herstellen.

x <- c(1, 2, 5)
y <- c(3, 4, 6)
z <- c(x, y)
z
## [1] 1 2 5 3 4 6

Eine ausführlichere Vorgehensweise zum Erstellen von Vektoren finden Sie im Thema "Erstellen von Vektoren"

Überprüfen Sie die Klassen

Jedem Objekt in R wird eine Klasse zugewiesen. Sie können class() , um die Klasse des Objekts zu finden, und str() , um die Struktur einschließlich der darin enthaltenen Klassen anzuzeigen. Zum Beispiel:

class(iris)
[1] "data.frame"

str(iris)
'data.frame':    150 obs. of  5 variables:
 $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
 $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
 $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
 $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
 $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 ...

class(iris$Species)
[1] "factor"

Wir sehen, dass Iris die Klasse data.frame und mit str() können wir die darin enthaltenen Daten untersuchen. Die Variable Species im Iris-Datenrahmen hat im Gegensatz zu den anderen Variablen, die klassennumerisch sind, einen Klassenfaktor. Die Funktion str() gibt auch die Länge der Variablen an und zeigt die ersten Beobachtungen, während die Funktion class() nur die Klasse des Objekts bereitstellt.

Vektoren und Listen

Daten in R werden in Vektoren gespeichert. Ein typischer Vektor ist eine Folge von Werten, die alle den gleichen Speichermodus haben (z. B. Zeichenvektoren, numerische Vektoren). Weitere Informationen zu den atomaren impliziten Klassen und den entsprechenden Speichermodi finden Sie unter ?atomic : "logical", "integer", "numeric" (synonym "double"), "complex", "character" und "raw" . Viele Klassen sind einfach ein atomarer Vektor mit einem class oben:

x <- 1826
class(x) <- "Date"
x 
# [1] "1975-01-01"
 x <- as.Date("1970-01-01")
 class(x)
#[1] "Date"
 is(x,"Date")
#[1] TRUE
 is(x,"integer")
#[1] FALSE
 is(x,"numeric")
#[1] FALSE
  mode(x)
#[1] "numeric"

Listen sind ein spezieller Vektortyp, bei dem jedes Element alles sein kann, sogar eine andere Liste, daher der R-Ausdruck für Listen: "Rekursivvektoren":

mylist <- list( A = c(5,6,7,8), B = letters[1:10], CC = list( 5, "Z") )

Listen haben zwei sehr wichtige Zwecke:

  • Da Funktionen nur einen einzelnen Wert zurückgeben können, werden häufig komplizierte Ergebnisse in einer Liste zurückgegeben:

    f <- function(x) list(xplus = x + 10, xsq = x^2)
    
    f(7)
    # $xplus
    # [1] 17
    # 
    # $xsq
    # [1] 49
    
  • Listen sind auch die zugrunde liegende grundlegende Klasse für Datenrahmen . Unter der Haube ist ein Datenrahmen eine Liste von Vektoren, die alle die gleiche Länge haben:

    L <- list(x = 1:2, y = c("A","B"))
    DF <- data.frame(L)
    DF
    #   x y
    # 1 1 A
    # 2 2 B
    is.list(DF)
    # [1] TRUE
    

Die andere Klasse rekursiver Vektoren sind R-Ausdrücke, die "Sprachobjekte" sind



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow