다음과 같이 xmlAttrs에서 반환 된 명명 된 문자 벡터가 있습니다.
testVect <- structure(c("11.2.0.3.0", "12.89", "12.71"), .Names = c("db_version",
"elapsed_time", "cpu_time"))
다음과 같은 데이터 프레임으로 변환하고 싶습니다.
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
답변
그것은 간단합니다 data.frame(as.list(testVect))
. 또는 열에 대해 합리적인 데이터 유형을 원하는 경우 data.frame(lapply(testVect, type.convert), stringsAsFactors=FALSE)
.
답변
@MatthewPlourde 및 @JackRyan의 답변은 작동하지만 긴 이름의 벡터가있는 경우 하나의 행과 많은 열이있는 데이터 프레임을 갖는 것은 성가신 일입니다. “키”열과 많은 행이있는 “값”열을 원하면 다음 중 하나가 작동합니다.
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
답변
나는 이것에 찔러야 할 것입니다.
test.vector <- as.data.frame(t(testVect))
class(test.vector)
답변
나는이 답변에서 제안 기능을 (사용하는 데 사용 as.list
, as_tibble
, t
, enframe
, 등)하지만 발견 이후이 dplyr::bind_rows
이제 원래의 질문이 하나의 함수 호출로 요청 정확히 무엇을하기 위해 노력하고 있습니다.
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
reprex 패키지 (v0.3.0)에 의해 2019-11-10에 생성됨
tidyverse 에서 볼 수 있듯이-명명 된 벡터를 data.frame / tibble로 바꾸는 선호하는 방법
답변
named vector %>% as_tibble(.,rownames="column name of row.names")