Saya memiliki vektor karakter bernama yang dikembalikan dari xmlAttrs seperti ini:
testVect <- structure(c("11.2.0.3.0", "12.89", "12.71"), .Names = c("db_version",
"elapsed_time", "cpu_time"))
Saya ingin mengubahnya menjadi bingkai data yang terlihat seperti ini:
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
sumber
sumber
data_frame(as.list(testVect))
mengembalikan bingkai data 5 baris.as_tibble(as.list(testVect))
atauas_data_frame(as.list(testVect))
(as_data_frame
adalah alias untukas_tibble
).data.table(as.list(...))
tidak berfungsi, tetapi berfungsias.data.table(as.list(...))
.Jawaban dari @MatthewPlourde dan @JackRyan berfungsi, tetapi jika Anda memiliki vektor bernama panjang, sangat mengganggu untuk memiliki bingkai data dengan satu baris dan banyak kolom. Jika Anda lebih suka memiliki kolom "kunci" dan kolom "nilai" dengan banyak baris, salah satu dari berikut ini akan berfungsi:
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
sumber
tibble::enframe(testVect)
.stack(testVect)
juga melakukan ini tetapi membiarkan nilainya sebagai karakter.testVect %>% as.list %>% as.data.frame %>% tidyr::gather()
Ini sebenarnya menghasilkan kolom 'kunci' dan 'nilai' yang dirujuk @dnlbrky.stack()
, sungguh fungsi yang diremehkan!Saya akan mencoba ini:
test.vector <- as.data.frame(t(testVect)) class(test.vector)
sumber
data.frame(t(testVect))
Aku digunakan untuk menggunakan fungsi disarankan dalam jawaban ini (
as.list
,as_tibble
,t
,enframe
, dll) tetapi sejak menemukan bahwadplyr::bind_rows
sekarang bekerja untuk melakukan apa pertanyaan awal bertanya dengan panggilan fungsi tunggal.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
Dibuat pada 2019-11-10 oleh paket reprex (v0.3.0)
Seperti yang ditunjukkan di tidyverse - cara yang lebih disukai untuk mengubah vektor bernama menjadi data.frame / tibble
sumber
named vector %>% as_tibble(.,rownames="column name of row.names")
sumber