2015-10-29 8 views
8

Ich möchte data.table Zeilen in Vektoren umwandeln. Hier ist, was bei mir funktioniert hat:Konvertieren der Zeile einer data.table in einen Vektor

unlist(dt[row_num]) 

Aber gibt es eine nativere Lösung? Ich mag es nicht auch, dass die oben den Namen behält, wenn es wirklich ich stattdessen einen reinen numerischen Vektor wollen, die dann führt zu:

as.numeric(unlist(dt[row_num])) 

scheint, wie es sollte eine bessere Option sein.

+6

das * ist * die native Lösung zum Umwandeln einer "Liste" in "Vektor" in R; Beachten Sie auch das 'use.names' -Argument von' unlist' – eddi

+0

Sie können auch Namen mit 'unname' entfernen. –

+3

Ich stimme dem ersten Satz von BondedDust hier zu: http://stackoverflow.com/a/8595099/1191259 "Technisch Listen * sind * Vektoren, obwohl sehr wenige diesen Begriff verwenden würden." In diesem Sinne können Sie bei 'c (dt [row_num])' stoppen – Frank

Antwort

8

Das Problem beim Extrahieren von Zeilen als Vektoren ist, dass Vektoren homogen sind, während Zeilen von Datenrahmen oder Datentabellen nicht sind.

Sie können jedoch die Daten in eine Matrix konvertieren dann die Zeile extrahieren:

> x <- iris[1:10,1:4] 
> as.matrix(x)[1,] 
Sepal.Length Sepal.Width Petal.Length Petal.Width 
     5.1   3.5   1.4   0.2 
11

Ok, jetzt weiß ich, wollen Sie eine Zeile:

as.matrix(dt[row_num])[1,] 

IMO es besser ist, zuerst zu verwenden, die data.table -Operation und nicht die komplette Datentabelle in eine Matrix zu konvertieren. Einfach die Leistung ist besser (besonders bei sehr großen data.tables).

Verwandte Themen