如果要问大家每次用R studio做分析数据的无语瞬间,大概每个朋友都会想起下面这些提示:
Error in function_list[[k]](value) : could not find function "ggplot"
Error in mutate_impl(.data, dots) : could not find function"make_date"
Error: could not findfunction "%>%"
然后猛然想起,又忘了导入这些个library了,然后赶紧加上:
library(ggplot2)
library(lubridate)
library(dplyr)
也许还远远不止,还需要导入这些:
library(tidyr)
library(stringr)
library(magrittr)
。。。
一串串的library,我常常在想,难道没有一个library可以把这些常用的包全部放在一起么?这样就不必分别读入,甚至常常忘记导入。果然,只有自己想不到,没有大神做不到。这个实现我愿望的神器就是:Tidyverse!怀着崇敬的心情去膜拜了官网的种种介绍,然后迅速给自己的Rstudio武装上了Tidyverse,瞬间感觉自己已经不是每次需要分开导入无数个包还常常忘记的菜鸟了,幸福。接下来满足的用户体验,让我忍不住为Tidyverse疯狂打call!这么棒的东西,当然要分享给大家!
为什么需要Tidyverse
对于大多部分数据分析任务,通常有一些固定的操作,操作对应的命令和library也是相对固定的,基本可以用下图概括。
首先,导入数据→整理数据,然后进入:转换数据→数据图像化→建立模型这三者的循环中,同时需要一些操作让我们的代码更简洁。
假如这些是你的日常操作,那么恭喜你。你再也不需要分别导入这些library了,有了一个一步到位的梦幻操作。
library(tidyverse)
神码是Tidyverse
再Tidyverse闪亮登场之后,让我们来认识一下这个全能boy。Tidyverse是一个集成的系统包,里面包含了众多用作数据处理分析的library,并且持续更新中。简而言之,有了Tidyverse,操作很美腻。
每次开始数据分析任务之前,只需要导入这样一个library,就可以高效的开始各种数据处理和图像化。惊不惊喜?意不意外!
magrittr package: Pipe
相信大家对tidyverse中的众多package都不陌生,我想重点推荐的是magrittr,它提供给我们管道(Pipe)操作的思想,数据就像管道中的水一样流进流出,十分优雅。
下面是一个我们经常会遇到的简单需求:
· 选取100符合正态分布的随机数
· 对每个数取绝对值
· 画出100个数的直方图
常规的操作如下:
> x <- rnorm(100)
> y <- abs(x)
> hist(y)
当我们引入pipe时,只需要每个操作之间用“%>%”连接,数据流就将执行结果传入下一个操作。代码如下,全程并没有多余的参数,总共只有一行代码,就完成我们的需求。
> rnorm(100) %>%
+ abs() %>%
+ hist()
Magrittr的出现让我们的代码更具有可读性,以及让我们的代码短短短!能用最简洁的语言完成复杂的操作,这不是每一个IT人士共同追求的目标么!
因此,在我看来,与其说Tidyverse是为了方便我们的操作而产生,不如说它是为了培养我们做数据科学的习惯而存在。在使用Tidyverse的过程中,我们的数据流始终保持一致,并且能够高效地进行数据转换和可视化等等操作。
参考链接: