美文网首页
R Tips: drop=FALSE

R Tips: drop=FALSE

作者: Thinkando | 来源:发表于2020-03-27 14:55 被阅读0次

    避免单列数据框转换成因子

    R TIP: 始终使用drop=FALSE

    • 在提取数据框或者maxtrix数据的时候我们喜欢使用[,], 那么我们应该养成习惯:始终使用drop=FALSE参数。
    • R中,单列数据框经常会被转换成因子:
    d <- data.frame(x = seq_len(3))
    print(d)
    #>   x
    #> 1 1
    #> 2 2
    #> 3 3
    d[order(-d$x), ]
    #> [1] 3 2 1
    # 注意,我们得到的是因子!
    

    上面例子中,我们的本意是对x进行排序,结果得到了因子,d[,]也会得到同样结果

    而加上drop=FALSE就能避免这种 情况

    d[order(-d$x), , drop = FALSE]
    #>   x
    #> 3 3
    #> 2 2
    #> 1 1
    # 得到的依然是数据框
    

    为了安全起见,在对数据框取数据时鼓励以下类似list的做法(毕竟数据框可以看作是column的list)

    d[["x"]]
    #> [1] 1 2 3
    
    d$x
    #> [1] 1 2 3
    
    d[[1]]
    #> [1] 1 2 3
    
    • 结论
      不管对象是不是单列,始终加上drop=FALSE参数,write mtcars[, c("mpg", "cyl"), drop = FALSE] instead of mtcars[, c("mpg", "cyl")]

    相关文章

      网友评论

          本文标题:R Tips: drop=FALSE

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