HOWTO · R

Datentypen von Variablen in R überprüfen

Dieses Tutorial zeigt, wie Sie den Variablentyp in R überprüfen.

Auf dieser Seite

Um eine Variable in R zu überprüfen, wählen Sie die Funktion danach aus, was Sie wissen möchten: typeof() gibt den zugrunde liegenden Speichertyp an, class() die Klasse, str() fasst die Struktur eines Objekts zusammen, und Prädikate wie is.numeric() geben TRUE oder FALSE zurück. Diese Funktionen untersuchen ein Objekt, ändern aber nicht dessen Typ.

Zwischen typeof() und class() für ein einzelnes R-Objekt wählen

Verwenden Sie typeof(), wenn Sie den grundlegenden Speichertyp eines Objekts in R wissen möchten. Verwenden Sie class(), wenn Sie die Klasse benötigen, die beeinflusst, wie generische Funktionen mit dem Objekt umgehen. Diese Unterscheidung ist wichtig, denn Speichertyp und Klasse eines Objekts können voneinander abweichen. Ein Faktor wird beispielsweise als ganzzahlige Codes gespeichert, hat aber die Klasse "factor".

Führen Sie dieses Beispiel aus. Der Code und die darin angezeigten Bezeichnungen oder Ausgaben bleiben auf Englisch:

scores <- factor(c("low", "high", "low"))
print(typeof(scores))
print(class(scores))

Die beiden Aufrufe untersuchen dasselbe Objekt aus unterschiedlichen Blickwinkeln. typeof() gibt dessen zugrunde liegende Darstellung an; class() nennt die Faktor-Klasse, die den Werten ihr kategoriales Verhalten verleiht. Bei gewöhnlichen numerischen und Zeichenvektoren können die Ergebnisse ähnlich aussehen, beantworten aber unterschiedliche Fragen.

Mit str() jede Spalte eines Datenrahmens untersuchen

Verwenden Sie str() für einen schnellen strukturellen Überblick über einen Datenrahmen. Die Funktion nennt die Anzahl der Zeilen und Spalten und fasst jede Spalte zusammen, einschließlich ihres Speichertyps und einiger Beispielwerte. Das ist hilfreich, bevor Sie Transformationen oder Typprüfungen für einzelne Spalten auswählen. Die Funktion gibt eine Zusammenfassung aus und lässt den Datenrahmen unverändert.

Führen Sie dieses Beispiel aus. Der Code und die darin angezeigten Bezeichnungen oder Ausgaben bleiben auf Englisch:

people <- data.frame(
  name = c("Ari", "Bo"),
  visits = c(3L, 5L),
  active = c(TRUE, FALSE)
)
str(people)

Achten Sie in der Zusammenfassung auf die Spaltennamen und Typkürzel: Zeichenwerte erscheinen als chr, Ganzzahlwerte als int und logische Werte als logi. R speichert gewöhnliche Ganzzahlwerte möglicherweise als num; verwenden Sie ein Ganzzahlliteral wie 3L, wenn die Ganzzahlspeicherung wichtig ist.

Prüfen, ob ein Objekt oder eine Spalte einen bestimmten Typ hat

Typprädikate beantworten eine Ja-Nein-Frage zu einem Objekt. Beispielsweise prüft is.numeric(), ob ein Objekt numerisch ist, is.character() prüft auf Zeichendaten und is.integer() gezielt auf ganzzahlige Speicherung. Jedes gibt einen logischen R-Wert zurück: TRUE oder FALSE. Ein numerischer Wert wie 3 wird gewöhnlich als Double gespeichert, daher ergibt is.integer(3) den Wert FALSE; schreiben Sie 3L, um ein Ganzzahlliteral zu erzeugen.

Führen Sie dieses Beispiel aus. Der Code und die darin angezeigten Bezeichnungen oder Ausgaben bleiben auf Englisch:

value <- 3L
labels <- c("new", "returning")
people <- data.frame(visits = c(3, 5), name = c("Ari", "Bo"))

print(is.integer(value))
print(is.character(labels))
print(is.numeric(people$visits))
print(is.character(people$name))

Mit $ oder [[ ]] übergeben Sie eine Datenrahmenspalte an ein Prädikat. Die Antwort bezieht sich auf die ausgewählte Spalte als Ganzes; sie prüft nicht jede Zelle auf einen jeweils anderen Typ. Ein Prädikat kann außerdem FALSE zurückgeben, wenn Speichertyp oder Klasse des Objekts nicht der spezifischen Definition der Funktion entsprechen, selbst wenn die Werte dem angefragten Typ ähnlich sehen.

Mit sapply() eine Typfunktion auf Elemente oder Spalten anwenden

Verwenden Sie sapply(), um eine Funktion auf jedes Element einer Sammlung anzuwenden und die Ergebnisse, wenn möglich, zu vereinfachen. Bei einem Datenrahmen erfolgt die Iteration über die Spalten. Wenn Sie dort typeof() anwenden, erhalten Sie daher für jede Spalte einen Speichertyp. Bei einem atomaren Vektor wandelt R gewöhnlich alle Elemente in einen gemeinsamen Typ um. Eine Typfunktion auf jedes Element anzuwenden, kann deshalb unterschiedliche ursprüngliche Typen nicht wiederherstellen, wenn sie durch diese Umwandlung bereits verloren gegangen sind.

Führen Sie dieses Beispiel aus. Der Code und die darin angezeigten Bezeichnungen oder Ausgaben bleiben auf Englisch:

people <- data.frame(
  name = c("Ari", "Bo"),
  visits = c(3L, 5L),
  active = c(TRUE, FALSE)
)
column_types <- sapply(people, typeof)
print(column_types)

Hier ruft sapply() für jede Spalte einmal typeof() auf und gibt die Ergebnisse als benannten Vektor zurück. Verwenden Sie stattdessen ein Typprädikat, wenn Sie wissen möchten, ob jede Spalte eine Bedingung erfüllt, zum Beispiel sapply(people, is.character). Bei komplexen oder gemischten Sammlungen können Sie die Struktur mit str() untersuchen oder ausdrücklich iterieren, damit die Form des Ergebnisses klar ist.

Verwenden Sie typeof() für den Speichertyp eines Objekts, class() für dessen Klasse, str() für einen strukturellen Überblick, Prädikate für Ja-Nein-Prüfungen und sapply(), um eine Prüfung auf Spalten anzuwenden. Der bereitgestellte Laufzeitnachweis enthält beobachtete Ergebnisse für alle vier Beispiele.