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")]

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 20171225(从有道迁移) 基本图形 条形图简单条形图:通过垂直的或水平的条形展示了类别型变量的分布(频数)语...
    KrisKC阅读 554评论 0 0
  • 刘小泽写于18.12.10生信必备三大件:生物、统计、技术,我想要借助R来学习统计学知识,因为平时使用R比较频繁,...
    刘小泽阅读 2,960评论 0 15
  • 刘小泽写于2018.8.27-28我们日常使用R一般不会使用它的编程工作(即写R包的任务),许许多多的的生信函数、...
    刘小泽阅读 28,001评论 1 27
  • 1.初识ggplot2 1.1 功能 是一个作图包; 可以创建图表,如散点,柱状图,线图,将数据可视化; 1.2 ...
    笨蛋白熊阅读 45,975评论 0 27
  • 使用GGPLOT2包进行数据可视化 Introduction简介 geom_smooth可以用于散点图,拟合一条直...
    一条很闲的咸鱼阅读 990评论 0 0