美文网首页生信修炼
R数据框选中某列之后不降为成列表

R数据框选中某列之后不降为成列表

作者: LeoinUSA | 来源:发表于2018-07-12 21:48 被阅读5次

    1. 问题

    数据处理中一个令人头疼的事情是选中数据框中的某列时经常会被降维成列表而不是保持原来数据框的结构,如下:

    student <- data.frame(ID=c(11,12,13),Name=c("Devin","Edward","Wenli"),Gender=c("M","M","F"))
    student
    
    数据框

    当我们想得到name这一行的时候会采用以下方法

    name1 <- student$Name
    name2 <- student[,2]
    str(name1)
    str(name2)
    #Factor w/ 3 levels "Devin","Edward",..: 1 2 3
    #Factor w/ 3 levels "Devin","Edward",..: 1 2 3
    

    可以看到数据都是factor类型的,没有保持为数据框,而这是不方面的

    2. 解决

    我们可以利用以下两种方式避免这种情况的发生

    name3 <- student[,2,drop = FALSE]
    name4 <- student["Name"]
    str(name3)
    str(name4)
    #'data.frame':  3 obs. of  1 variable:
    #$ Name: Factor w/ 3 levels "Devin","Edward",..: 1 2 3
    #'data.frame':  3 obs. of  1 variable:
    #$ Name: Factor w/ 3 levels "Devin","Edward",..: 1 2 3
    

    其中注意双中括号和单双括号的区别

    name5 <- student[["Name"]]
    str(name5)
    #Factor w/ 3 levels "Devin","Edward",..: 1 2 3
    

    双中括号类似于$功能了。

    相关文章

      网友评论

        本文标题:R数据框选中某列之后不降为成列表

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