Ich habe einen benannten Zeichenvektor von xmlAttrs wie folgt zurückgegeben:
testVect <- structure(c("11.2.0.3.0", "12.89", "12.71"), .Names = c("db_version",
"elapsed_time", "cpu_time"))
Ich möchte es in einen Datenrahmen konvertieren, der so aussieht:
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
r
dataframe
vector
type-conversion
Tyler Muth
quelle
quelle
data_frame(as.list(testVect))
einen 5-Zeilen- Datenrahmen zurück .as_tibble(as.list(testVect))
oderas_data_frame(as.list(testVect))
(as_data_frame
ist ein Alias füras_tibble
).data.table(as.list(...))
funktioniert nicht, sondernas.data.table(as.list(...))
funktioniert.Die Antworten von @MatthewPlourde und @JackRyan funktionieren, aber wenn Sie einen lang benannten Vektor haben, ist es ärgerlich, einen Datenrahmen mit einer Zeile und vielen Spalten zu haben. Wenn Sie lieber eine "Schlüssel" -Spalte und eine "Wert" -Spalte mit vielen Zeilen haben möchten, sollte eine der folgenden Möglichkeiten funktionieren:
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 ## Suggested by @JWilliman tibble::enframe(testVect) ## # A tibble: 3 x 2 ## name value ## <chr> <chr> ## 1 db_version 11.2.0.3.0 ## 2 elapsed_time 12.89 ## 3 cpu_time 12.71 ## Suggested by @Joe stack(testVect) ## values ind ## 1 11.2.0.3.0 db_version ## 2 12.89 elapsed_time ## 3 12.71 cpu_time
quelle
tibble::enframe(testVect)
.stack(testVect)
tut dies auch, lässt aber die Werte als Zeichen.testVect %>% as.list %>% as.data.frame %>% tidyr::gather()
Dies erzeugt tatsächlich die Spalten 'key' und 'value', auf die sich @dnlbrky bezieht.stack()
, was für eine unterschätzte Funktion!Ich werde das versuchen:
quelle
data.frame(t(testVect))
Ich benutzte die Funktionen in diesen Antworten vorgeschlagen zu verwenden (
as.list
,as_tibble
,t
,enframe
usw.) , aber seitdem , dass herausgefunden,dplyr::bind_rows
funktioniert jetzt genau das zu tun , was die ursprüngliche Frage mit einem einzigen Funktionsaufruf fragt.library(dplyr) testVect <- structure(c("11.2.0.3.0", "12.89", "12.71"), .Names = c("db_version", "elapsed_time", "cpu_time")) testVect %>% bind_rows #> # A tibble: 1 x 3 #> db_version elapsed_time cpu_time #> <chr> <chr> <chr> #> 1 11.2.0.3.0 12.89 12.71
Erstellt am 10.11.2019 durch das reprex-Paket (v0.3.0)
Wie in tidyverse gezeigt - bevorzugte Methode, um einen benannten Vektor in einen data.frame / tibble umzuwandeln
quelle
named vector %>% as_tibble(.,rownames="column name of row.names")
quelle