欢迎

简介

本书为R和tidyverse的入门向教程。教学视频在b站(还没开播,从6月中旬一直跳票至今)。答案在r-and-tidyverse-book-ans Github仓库

本书有Gitbook版本 (https://tianyishi2001.github.io/r-and-tidyverse-book/ )和通过XeLaTeX排版的PDF版本

如果有写得不对的地方,欢迎批判、指正。

Gitbook版本使用说明

左上角的菜单可以选择收起/展开目录,搜索,和外观,字体调整。中文衬线体使用的是思源宋体。

如果你对某一段文字有修改意见,可以选择那段文字,并通过Hypothesis留言(选择“annotate”)。右上角可以展开显示公开的留言。首次使用需要注册。

如果你熟悉Bookdown和Github,可以在此提交pull request.

为什么写本书

在下一个版本中,我会写一个序言,解释我写这本书的原因。

简而言之,是为了实现知识的自由化——我人生的大目标(前提是我还有钱恰饭)——而做的初步探索。这本书并不是我理想中知识自由的世界的产物——事实上,像我写的这种自由获取的教程并不少见——但是我还是有必要亲自体验一下写这类书时遇到的问题,和这类书的局限性。

总之,这本书只是我的一个实验品。相比于其他专业的R教程,可能并没有什么优势。但是,我会对读者负责。如果你对本书的内容有任何意见,我一定会作出回应。

本书的结构

Hadley Wickham写R for Data Science的时候把绘图放在了第一章,随后再讲加减乘除和数据处理,他认为这样可以降低新人被劝退的概率。我虽然很喜欢他的书,但是我是一个比较保守的人,所以我把所有我认为是基础的内容放在了前面。

为了防止劝退,本书的内容分为基础部分和(相对)进阶部分;基础部分的段落中会有“可酌情跳过进阶部分”的提示,以帮助你流畅地看完基础部分。仅阅读基础部分即可学到最重要的知识;如学有余力可阅读进阶部分。

在本书你不会学到:

  1. 详细的统计学方法。我本身数学很差,教这个是要谢罪的。
  2. Python (NumPy/SciPy)。在数据挖掘/数据分析领域,Python和R一样是我们的好伙伴,而且它们经常被联合使用。但是本书作为R的入门教程,应当专注于R。
  3. SAS, SPSS, STATA等软件(包括它们与R的协同使用)。

关于编写本书的技术信息

本书以R Markdown格式 (http://rmarkdown.rstudio.com/ )在RStudio (http://www.rstudio.com/ide/ )中编写。

knitr (http://yihui.name/knitr/ )和pandoc (https://pandoc.org/ )把Rmd文件编译成html和tex,

XeLaTeX

将tex排版为PDF;这一系列操作是使用bookdown (https://bookdown.org )自动完成的。

本书的源码,Gitbook和PDF版本的书保存在https://github.com/TianyiShi2001/r-and-tidyverse-book/ ,其中Gitbook和PDF保存在/docs/目录下,由GitHub Pages生成静态网页,通过https://TianyiShi2001.github.io/r-and-tidyverse-book/ 访问。

编写本书使用的R packages,和排版本书时R的sessionInfo显示如下:

utils::sessionInfo(c("tibble", "dplyr", "forcats", "ggplot2", "stringr", "tidyr", "readr", "purrr", "lubridate", "doParallel", "foreach", "rmarkdown", "knitr", "bookdown"))
#> R version 3.5.3 (2019-03-11)
#> Platform: x86_64-apple-darwin15.6.0 (64-bit)
#> Running under: macOS  10.15
#> 
#> Matrix products: default
#> BLAS: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRblas.0.dylib
#> LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib
#> 
#> locale:
#> [1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8
#> 
#> attached base packages:
#> character(0)
#> 
#> other attached packages:
#>  [1] tibble_2.1.3      dplyr_0.8.3       forcats_0.4.0    
#>  [4] ggplot2_3.2.0     stringr_1.4.0     tidyr_0.8.3      
#>  [7] readr_1.3.1       purrr_0.3.2       lubridate_1.7.4  
#> [10] doParallel_1.0.14 foreach_1.4.4     rmarkdown_1.13.6 
#> [13] knitr_1.23        bookdown_0.11    
#> 
#> loaded via a namespace (and not attached):
#>  [1] tidyselect_0.2.5 xfun_0.8         haven_2.1.1      lattice_0.20-38 
#>  [5] colorspace_1.4-1 generics_0.0.2   htmltools_0.3.6  yaml_2.2.0      
#>  [9] grDevices_3.5.3  rlang_0.4.0      pillar_1.4.2     glue_1.3.1      
#> [13] withr_2.1.2      tidyverse_1.2.1  modelr_0.1.4     readxl_1.3.1    
#> [17] munsell_0.5.0    gtable_0.3.0     cellranger_1.1.0 rvest_0.3.4     
#> [21] codetools_0.2-16 evaluate_0.14    parallel_3.5.3   broom_0.5.2     
#> [25] methods_3.5.3    Rcpp_1.0.1       scales_1.0.0     backports_1.1.4 
#> [29] jsonlite_1.6     stats_3.5.3      datasets_3.5.3   graphics_3.5.3  
#> [33] hms_0.4.2        digest_0.6.20    stringi_1.4.3    grid_3.5.3      
#> [37] cli_1.1.0        tools_3.5.3      magrittr_1.5     lazyeval_0.2.2  
#> [41] crayon_1.3.4     pkgconfig_2.0.2  xml2_1.2.0       utils_3.5.3     
#> [45] assertthat_0.2.1 base_3.5.3       httr_1.4.0       rstudioapi_0.10 
#> [49] iterators_1.0.10 R6_2.4.0         nlme_3.1-140     compiler_3.5.3