2015-10-29 27 views
8

data.table satırlarını vektörlere dönüştürmek istiyorum. İşte benim için çalıştı:Bir data.table satırının bir vektöre dönüştürülmesi

Ama daha yerel bir çözüm var mı? Daha iyi bir seçenek olması gerektiği gibi

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

görünüyor: Ben de gerçekten ben sonra açar, bunun yerine saf sayısal vektör istediğinizde yukarıdaki adını korur sevmiyorum.

+6

* Bu * bir * listeyi R'ye dönüştürmek için yerel çözümdür; Ayrıca "unlist" – eddi

+0

"use.names" argümanını da unutmayın. Ayrıca unname ile adlarını kaldırabilirsiniz. –

+3

BondedDust'un ilk cümlesini burada kabul ediyorum: http://stackoverflow.com/a/8595099/1191259 "Teknik olarak listeler *, * vektörleridir, ancak çok azı bu terimi kullanır." Bu anlamda, 'c (dt [row_num]) konumunda durabilirsiniz – Frank

cevap

8

Satırları vektörler olarak ayıklamakla ilgili sorun, veri karelerinin veya veri tablolarının satırlarının değil, vektörlerin homojen olmasıdır.

Ancak, daha sonra satır ayıklamak bir matris verileri dönüştürebilirsiniz:

> 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

Tamam, bir satır istediğiniz şimdi biliyorum:

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

IMO ilk kullanmak daha iyidir data.table işleyişi ve tüm veri tabanını bir matrise dönüştürmemesi. Sadece performans daha iyidir (özellikle çok büyük data.tables).

İlgili konular