2013-05-29 13 views
43

Mam nazwie charakter wektora wrócił z xmlAttrs tak:Konwersja Nazwany charakter wektora do data.frame

testVect <- structure(c("11.2.0.3.0", "12.89", "12.71"), .Names = c("db_version", 
      "elapsed_time", "cpu_time")) 

Chciałbym przekształcić go w ramce danych, które wygląda następująco:

testDF <- data.frame("db_version"="11.2.0.3.0","elapsed_time"=12.89,"cpu_time"=12.71) 
head(testDF) 
    db_version elapsed_time cpu_time 
1 11.2.0.3.0  12.89 12.71 

Odpowiedz

38

To jest tak proste, jak data.frame(as.list(testVect)). Lub jeśli potrzebujesz sensownych typów danych dla kolumn, data.frame(lapply(testVect, type.convert), stringsAsFactors=FALSE).

9

Idę wziąć ukłucie w tym:

test.vector <- as.data.frame(t(testVect)) 
class(test.vector) 
33

odpowiedzi od @MatthewPlourde i @JackRyan pracy, ale jeśli masz długi nazwie wektor jest irytujące mieć ramkę danych z jednego wiersz i wiele kolumn. Jeśli wolisz kolumnę "kluczową" i kolumnę "wartości" z wieloma wierszami, powinno to zadziałać:

data.frame(keyName=names(testVect), value=testVect, row.names=NULL) 

##  keyName  value 
## 1 db_version 11.2.0.3.0 
## 2 elapsed_time  12.89 
## 3  cpu_time  12.71 
+0

smutno, że nie ma jednego liniowca –