准备一个带names的向量
a_vector <- c("a","b","c","d")
names(a_vector) <- c("A","B","C","D")
a_vector
## A B C D
##"a" "b" "c" "d"
将带names的vector转换为单列data.frame
as.data.frame() 是数据框,行名为原向量names,列名为原对象名称。
a_data.frame <- as.data.frame(a_vector)
View(a_data.frame)
将带有行名的data.frame转换为带names的vector
方法一:as.vector()
as.vector() 并未将向量转换为向量。毕竟是个数据框,不管单列还是多列内容需要选定列。
b_vector <- as.vector(a_data.frame$a_vector)
b_vector ## 无names的向量
## [1] "a" "b" "c" "d"
class(b_vector)
## [1] "character"
names(b_vector) <- rownames(a_data.frame)
b_vector ##带names的向量
## A B C D
## "a" "b" "c" "d"
方法二:dplyr::pull()
library(dplyr)
library(tibble)
c_vector <- a_data.frame %>%
rownames_to_column() %>% #将rownames转到数据框内,新列名为rowname
pull(var = a_vector, #将要转换为向量的内容
name = rowname # 将rowname列作为新向量的名称
)
c_vector #带names的向量
## A B C D
## "a" "b" "c" "d"