R学习笔记及学习计划
人对事物的认识大概可以分为三个层次,从“未知的未知”到“已知的未知”再到“已知的已知”。如果确实是这样的话,那学习就可以分为两种,一种是把“未知的未知”变为“已知的未知”,如了解到这个世界上存在一种叫做“负数”的东西,但不知道它究竟指什么;另一种是把“已知的未知”变为“已知的已知”,如通过进一步的了解,获知“负数”的确切意义。德尔菲的神谕认为没有人比苏格拉底更聪明,其看重的可能并不在于苏格拉底是否比其他所有人拥有更多“已知的已知”,而是看到他比其他人拥有更多“已知的未知”。我不知道两种学习中哪一种更为重要,但我觉得,在大多数情况下,前一种学习都是后一种学习的先决条件。人的时间是有限的,没法把所有的知识都掌握,所以比较好的学习思路可能是先去获取足够多的“已知的未知”,再决定把哪些“已知的未知”转变为“已知的已知”。
我接触R已经三年多了,但真正开始学习R,也就一年多的样子。我对R本身其实没有多大的兴趣,但当我把tidyverse
变为“已知的未知”时,才对这门语言产生了热情。翻开哲学的入门书,很有可能会发现最开始的章节是以苏格拉底来划分的,如类似“前苏格拉底时代的哲学家们”的说法。在这里,我也想用tidyverse
这个词来对我的笔记章节进行划分(当然,tidyverse
对应的哲学家更有可能是笛卡尔),具体来说,包括tidyverse
之前,用来介绍R的一些基本知识;tidyverse
之内,用来介绍tidyverse
核心包的使用方法;tidyverse
之上,用来介绍建立在tidyverse
核心包基础上的一些实用的包;tidyverse
之外,用来介绍与tidyverse
无关,但很有用的一些包。当然,这些内容中的很大一部分对我来说还是“已知的未知”。
想弄这么个东西,目的主要有两个:一方面,把自己会的东西以教程的形式写出来,能让自己把“已知的已知”掌握得更牢固;另一方面,也能督促自己不断地去学习新知识,探索“未知的未知”,转化“已知的未知”。因此,内容方面,就包括我目前会的,和我将来想学的,具体内容可以看后面暂定的大纲。另外,我也给自己设定了几个要求:
术语尽量给出参考资料和对应的英文,不知道该如何翻译的直接用英文,符号给出对应的英文及其读音;
尽量保证所有的内容都能跟上R本体和所涉及的包的更新;
暂定的提纲如下:
tidyverse
之前
R的介绍及安装
R的基本概念及操作
R中的条件与循环
tidyveRse
之内
使用
readr
导入数据使用
rvest
获取网络数据dbplyr
与数据库dplyr
包常用操作及管道操作符tidyr
包常用操作及tidy datastringr
包常用操作及正则表达式forcats
常用操作lubridate
常用操作purrr
包探索组合使用
tidyverse
代码风格ggplot2
基本统计图的绘制ggplot2
统计图的调整ggplot2
统计图的美化
tidyverse
之上
使用
tidytext
进行文本分析使用
ggvis
绘制交互统计图使用
gganimate
绘制动态统计图
tidyverse
之外
使用
rmarkdown
撰写报告使用
blogdown
搭建博客使用
shiny
制作网络应用