Klasse von Daten.Tabelle Spalte

Ich würde gerne wissen, wie um festzustellen, die Klasse für eine Spalte in einer Datengrundlage.Tabelle dt gegeben ein Charakter-Vektor w.

Reproduzierbare Beispiel:

dt <- data.table(matrix(1:10, 2))
w <- "V1"

Wenn Sie angeben, dass eine Spalte über den Namen direkt, es gibt den Vektor so, dass man seine Klasse:

> dt[,V1]
[1] 1 2
> class(dt[,V1])
[1] "integer"

Geben Sie es als ein Zeichen, Vektor, jedoch, und es stattdessen gibt eine eine Spalte Daten.Tabelle:

> dt[,w,with=FALSE]
   V1
1:  1
2:  2
> class(dt[,w,with=FALSE])
[1] "data.table" "data.frame"

Habe ich irgendwie verwurschtelt meine Art zu der folgenden Lösung, aber sicher gibt es einen besseren Weg:

dt[,eval(parse(text=paste0("class(",w,")")))]

Also zwei Fragen:

  1. Ist es besser (präziser), um die Klasse für eine einzelne Spalte (withoout geben, bis die Geschwindigkeit mit der die oben genannte Lösung die Gewinne durch die Bewertung der Aufruf class im Umfeld der Daten.Tabelle?
  2. Gibt es einen Weg, um einen Vektor für die Klassen aller Spalten, analagous zu sapply( myDataFrame, class) ?
  • hee hee du weißt es besser, als zuzugeben, um mittels "eval(parse(" 🙂
  • Ich habe keine Schande 🙂
Schreibe einen Kommentar