美文网首页
vector和data.frame的相互转换

vector和data.frame的相互转换

作者: 学生信的大叔 | 来源:发表于2022-08-18 21:38 被阅读0次

    准备一个带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)
    
    image.png

    将带有行名的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" 
    

    相关文章

      网友评论

          本文标题:vector和data.frame的相互转换

          本文链接:https://www.haomeiwen.com/subject/iuaegrtx.html