I have a named character vector returned from xmlAttrs like this:
testVect <- structure(c("11.2.0.3.0", "12.89", "12.71"), .Names = c("db_version",               "elapsed_time", "cpu_time"))   I would like to convert it to a data frame that looks like this:
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 
                Use as_tibble() to turn an existing object into a tibble. Use enframe() to convert a named vector into a tibble.
enframe() converts a named vector to a tib- ble with a column of names and column of values.
It's as simple as data.frame(as.list(testVect)). Or if you want sensible data types for your columns, data.frame(lapply(testVect, type.convert), stringsAsFactors=FALSE).
The answers from @MatthewPlourde and @JackRyan work, but if you have a long named vector it is annoying to have a data frame with one row and many columns. If you'd rather have a "key" column and a "value" column with many rows, any of the following should work:
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 
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With