讲义材料已于 r Sys.Date() 更新,更多问题欢迎联系李老师解决。
R 和 RStudio 的安装是非常简单的,这里提供一些安装技巧。在文章的最后我还通过一个案例带大家走进奇幻的 R 世界。
安装 R
下载页面:https://mirrors.tuna.tsinghua.edu.cn/CRAN/
我安装的 R 语言是 r version$version.string,该发行版的名字是 r version$nickname。
如果你已经安装了 R 和 RStudio,可以运行下面的语句查看自己 R 版本的版本名称:
# 查看自己 R 版本 version$version.string # 查看自己 R 版本的名称 version$nickname
根据自己的电脑系统选择安装即可,下载好之后一路安装即可。
注意安装路径中不要有中文文件夹。
Windows 用户:安装 RTools:Windows 构建工具(Mac 用户请跳过) R 是一种解释型语言(有时也称为脚本语言),这意味着代码在运行之前并不需要编译。但是很多 R 包编写的时候封装了 C/C++/Fortran 语言的代码,因此这些包在构建的时候需要编译工具,这个时候我们就需要使用到 RTools 了,不过需要注意 RTools 只有 Windows 用户需要安装,Mac 用户可以跳过这部分内容。
下载地址:https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/windows/Rtools/
这里需要根据自己的 R 语言版本选择安装:
R 语言版本
RTools 版本
RTools 4.5
for R versions from 4.5.0 (including R-devel)
RTools 4.4
R versions from 4.4.x (R-release)
RTools 4.3
R versions 4.3.x (R-oldrelease)
RTools 4.2
R versions 4.2.x
RTools 4.0
R from version 4.0.0 to 4.1.3
old versions of RTools
R versions prior to 4.0.0
建议还是尽量安装最新的,至少安装 4.2 之后的版本。
Mac 用户:安装 XQuartz 和 homebrew(Windows 用户请跳过) 不同于 Windows 用户需要安装 Rtools,Mac 用户需要先安装 XQuartz 和 homebrew。
XQuartz 项目是一个开源的解决方案,用于实现在 Mac OS X 下运行 X.org 窗口管理系统。不少 R 包的绘图函数需要 XQuartz 的支持,因此提前安装好很有必要。
下载安装 XQuartz 下载链接:https://github.com/XQuartz/XQuartz/releases/
Github 上的文件下载比较困难,可以借助这个网站快速下载 https://down.npee.cn/
另外附件中也提供了下载好的安装文件(2.8.6版本的,如果需要最新的可以到上面的链接下载)。
下载完之后记得安装!
安装 homebrew (如果实在安装不上,可以跳过) Homebrew 是一款 Mac OS 平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径的情况,十分方便快捷。官网链接为 https://brew.sh/ ,根据首页的介绍,Homebrew 可以采用如下的方式安装(打开终端运行):
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
不过国内的用户访问 GitHub 有些困难,所以上面的代码可能难以成功运行,推荐使用国内的镜像进行安装,也就是运行下面的代码:
打开终端(Terminal)输入如下命令安装 homebrew:
/bin/zsh -c “$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
运行过程中根据提示操作即可,完成之后重启下终端。
安装 Xcode 工具 Xcode 是运行在操作系统 Mac OS X 上的集成开发工具(IDE)。有时候也会用到,也建议提前安装,打开终端(terminal)运行如下代码即可安装(需要输入开机密码):
打开终端(Terminal)输入如下命令安装 Xcode:
xcode-select –install
安装 pkg-config 和 gdal(一些 R 包的依赖,在终端运行) 然后我们就可以使用 brew 命令安装一些软件包了。根据 sf 包的安装指引(https://github.com/r-spatial/sf/ ),pkg-config 和 gdal 可以使用 brew 安装,在终端运行下面的代码即可:
brew install pkg-config brew install gdal
一些 R 包的安装可能需要 GNU Fortran 编译器,但是本课程涉及到的 R 包并不需要,感兴趣的读者可以参考 https://mac.r-project.org/tools/ 安装和配置。
也有不少包需要 Java 支持,例如 xlsx 包,不过我们可以使用 readxl 和 writexl 包替代,因此这里也不再讲解 Java 的安装了,感兴趣的读者可以从 Java 官网下载 Java JDK 安装。
安装 RStudio Desktop(用迅雷下载会很快) 在 Windows OS 或者 Mac OS X 下使用 R 语言,都会有一个图形用户界面(GUI)可以用。包括一个命 令行解释器、绘图窗口和帮助页面,以及一个基本的文本编辑器。利用这个默认工 具就完全可以使用 R。不过为了提升编码的效率,我们可以选择一个更好的代码编辑器,对于 R 语言我们有很多可以选择,例如 Emacs、Eclipse/Architect、RStudio、Revolution-R、Live-R、Sublime Text、Vim、Notepad++、Atom 等等,但是其中最好用且最专业的莫过于 RStudio 了。
RStudio 软件由 Posit Software 公司开发,免费版和商业版的都有。对于个人用户来说,免费版已足以使用。RStudio 是 R 语言的集成开发环境(Integrated Development Environment, IDE),包含 R 语言所需的所有工具(控制台、代码编辑器、绘图窗口、帮助文档查看、历史代码运行记录等)。此外,随着 rmarkdown、knitr、bookdown 等包的开发,你还可以使用 RStudio 文件文档的创作和编排。
下载页面:https://posit.co/download/rstudio-desktop/
根据自己的电脑系统选择版本安装即可。同样,建议安装路径中不要出现中文,否则你会饱尝中文乱码的烦恼。
注意 一定要先安装 R 再安装 RStudio!否则可能会出现问题。
安装常用的一些 R 包 可以运行下面的几句命令快速的安装一些 R 包,如果第一次安装失败,可以尝试把 dependencies = TRUE 参数删除重新运行一次试试。
为了安装包更快些,我们可以把镜像源设置成国内的:点击 RStudio 界面上的 Tools -> Global Options -> Packages -> Change… 然后选择清华镜像源:
然后 OK。
另外还可以在 General 里面设置默认的工作目录(这样之后每次 RStudio 打开的工作目录都会是这个文件夹):
在 Code -> Saving 界面设置默认文本编码为 UTF-8:
下面我们开始安装 R 包:
安装 usethis 包:
# 安装 usethis install.packages("usethis")
安装的过程中注意阅读代码的反馈信息,例如我安装的时候就遇到了下面的错误:
Warning in install.packages : downloaded length 32768 != reported length 503020 Warning in install.packages : URL 'https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/macosx/contrib/4.1/httr_1.4.2.tgz': Timeout of 60 seconds was reached Error in download.file(url, destfile, method, mode = "wb", ...) : download from 'https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/macosx/contrib/4.1/httr_1.4.2.tgz' failed Warning in install.packages : download of package ‘httr’ failed
显然这个是 httr 包安装失败了,我们再试试安装 httr:
下面我们继续安装一些 R 包,部分包如果安装失败可以直接跳过,以后需要的时候再安装。安装过程中如果弹出对话框让选择是否,一律选择否或者 No:
install.packages( "devtools" ) install.packages( "tidyverse" , dependencies = TRUE ) install.packages( "tinytex" , dependencies = TRUE ) tinytex:: install_tinytex( ) install.packages( "rticles" , dependencies = TRUE ) install.packages( "xaringan" , dependencies = TRUE ) install.packages( "shiny" , dependencies = TRUE ) install.packages( "sf" , dependencies = TRUE ) install.packages( "hrbrthemes" , dependencies = TRUE ) install.packages( 'patchwork' , dependencies = TRUE ) install.packages( 'manipulateWidget' , dependencies = TRUE ) install.packages( 'ggthemes' , dependencies = TRUE ) install.packages( 'tidyquant' , dependencies = TRUE ) install.packages( 'rvest' , dependencies = TRUE ) install.packages( 'DT' , dependencies = TRUE ) install.packages( "basetheme" , dependencies = TRUE ) install.packages( "pacman" , dependencies = TRUE ) install.packages( 'corrplot' , dependencies = TRUE ) install.packages( 'formattable' , dependencies = TRUE ) install.packages( 'paletteer' ) install.packages( 'reprex' ) install.packages( 'showtext' ) install.packages( 'ggchicklet_0.5.2.tar.gz' , type = "source" , repos = NULL ) install.packages( "tidytext" ) install_git( "https://gitee.com/tidyfriday/jiebaRD.git" ) install_git( "https://gitee.com/tidyfriday/jiebaR.git" )
用一段时间之后你的电脑上就会安装一大堆 R 包,使用下面的代码可以查看自己电脑上的 R 包数量。
library( tidyverse) installed.packages( ) %>% as_tibble( ) %>% count( ) %>% pull( ) %>% paste( "该电脑一共有" , ., "个 R 包!" ) %>% message( )
安装字体 附件中有个 font 文件夹,里面存放了一些字体安装文件。
全选所有的字体文件,然后右键选择安装即可。
也可以在自己的电脑上找个固定的位置放置这些字体,后续自己收集的字体也可以都放进去。这样可以方便使用 showtext 包设置字体。
有些使用 Windows 的小伙伴测试发现使用我提供的字体按照下面的 Profile 方法无法配置成功,可以找一下自己电脑上的字体文件(百度下 Windows 下如何查看字体,一般在 C 盘的 C:/Windows/Fonts/ 文件夹里面)。
设置 R Profile 设置 R Profile 是把自己经常用到的代码放到 .Profile 文件里面,这样在 RStudio 启动的时候这些代码就会自动运行,很方便。
创建 R Profile 文件可以使用:
usethis:: edit_r_profile( )
类似,有些 Windows 小伙伴的电脑用户名是中文的,这种情况下往往会出现中文乱码的错误,这个时候建议尽早重装电脑系统然后给电脑设置个英文的用户名,另外一种临时的解决办法是使用下面的代码替代上面的 usethis::edit_r_profile():
# 运行 file.edit("~/.Rprofile")
如果仍然无法解决可以重装系统或者跳过 Profile 的设置,之后如果遇到课程里面的代码里出现 cnfont、enfont 之类的可以删除相关参数。
运行之后自动会打开一个文件,在里面输入你想要在 R 启动的时候自动运行的代码即可,可以参考我的:
注意如果字体设置没有生效可以重启下 RStudio 再试试。
Windows 系统:
大家需要自行设置代码里面的字体路径和字体文件(一般在 C 盘的 C:/Windows/Fonts/ 文件夹里面)。
pacman:: p_load( ggplot2, dplyr, RColorBrewer, hrbrthemes, grDevices) library( showtext) showtext_auto( enable = TRUE ) font_add( "cnfont" , regular = "C:/Windows/Fonts/simsun.ttc" ) font_add( "enfont" , regular = "C:/Windows/Fonts/times.ttf" , bold = "C:/Windows/Fonts/timesbd.ttf" , italic = "C:/Windows/Fonts/timesi.ttf" , bolditalic = "C:/Windows/Fonts/timesbi.ttf" ) cnfont <- "cnfont" enfont <- "enfont" theme_set( theme_ipsum( base_family = 'cnfont' ) ) library( basetheme) pars <- basetheme( "default" ) pars$ palette <- c ( "#2A363B" , "#019875" , "#99B898" , "#FECEA8" , "#FF847C" , "#E84A5F" , "#C0392B" , "#96281B" ) pars$ bg <- "white" pars$ fg <- "gray20" pars$ col <- "gray20" pars$ col.main <- "black" pars$ col.axis <- "gray20" pars$ col.lab <- "gray20" pars$ family <- "cnfont" pars$ lab <- c ( 10 , 10 , 7 ) pars$ cex.axis <- 0.8 pars$ las <- 0 pars$ rect.border <- "black" pars$ rect.lwd <- 4 basetheme( pars) options( scipen = 1 ) options( ggplot2.continuous.colour = "viridis" , ggplot2.continuous.fill = "viridis" ) conflicted:: conflicts_prefer( dplyr:: filter( ) ) conflicted:: conflicts_prefer( dplyr:: select( ) ) tidymodels:: tidymodels_prefer( quiet = T )
Mac 系统参考(注意字体替换成自己电脑上的):
pacman:: p_load( ggplot2, dplyr, RColorBrewer, hrbrthemes) print( "已加载 ggplot2、dplyr、hrbrthemes 和 RColorBrewer!" ) library( showtext) showtext_auto( enable = TRUE ) font_add( "cnfont" , bold = "~/Library/Fonts/LXGWWenKai-Medium.ttf" , regular = "~/Library/Fonts/LXGWWenKai-Regular.ttf" , italic = "~/Library/Fonts/LXGWWenKai-Light.ttf" ) font_add( "enfont" , regular = "~/Library/Fonts/FiraCode-Regular.ttf" , bold = "~/Library/Fonts/FiraCode-Bold.ttf" , italic = "~/Library/Fonts/FiraSansCondensed-Italic.ttf" , bolditalic = "~/Library/Fonts/FiraSansCondensed-BoldItalic.ttf" ) cnfont <- "cnfont" enfont <- "enfont" theme_set( theme_ipsum( base_family = cnfont) ) print( "已 ggplot2 绘图主题为 theme_ipsum()!" ) library( basetheme) pars <- basetheme( "default" ) pars$ palette <- c ( "#2A363B" , "#019875" , "#99B898" , "#FECEA8" , "#FF847C" , "#E84A5F" , "#C0392B" , "#96281B" ) pars$ bg <- "white" pars$ fg <- "gray20" pars$ col <- "gray20" pars$ col.main <- "black" pars$ col.axis <- "gray20" pars$ col.lab <- "gray20" pars$ family <- cnfont pars$ lab <- c ( 10 , 10 , 7 ) pars$ cex.axis <- 0.8 pars$ las <- 0 pars$ rect.border <- "black" pars$ rect.lwd <- 4 basetheme( pars) options( scipen = 1 ) options( ggplot2.continuous.colour = "viridis" , ggplot2.continuous.fill = "viridis" ) conflicted:: conflicts_prefer( dplyr:: filter( ) ) conflicted:: conflicts_prefer( dplyr:: select( ) ) tidymodels:: tidymodels_prefer( quiet = T )
注意上面的 pars$family <- cnfont 里面的字体应该使用你设置好的字体。
这样设定好之后保存、关闭 Profile 文件 再重启 RStudio 即可生效。
基于这种设定,使用 R 基础绘图系统绘图的结果将会是这样的:
使用 ggplot2 绘图的结果是这样的:
library( ggplot2) ggplot( iris) + geom_col( aes( x = Sepal.Length, y = Sepal.Width, fill = Species, color = Species) ) + tidyquant:: scale_fill_tq( ) + tidyquant:: scale_color_tq( )
设置 RStudio 的样式 我比较喜欢暗黑一些的样式,在 Console 运行下面的代码即可更换为我推荐的主题:1337
rstudioapi:: addTheme( "1337.tmTheme" , apply = T , force = T )
这个主题是这样的:
也可以从这里下载其他主题:https://colorsublime.github.io
一个小的练习:爬取 CRAN 上的所有 R 包的名称、发布日期和标题
大家可以先不用急着理解下面的代码。只想想通过下面的案例让大家感受 R 语言的语法逻辑和绘图的精美。
可以爬清华镜像源的列表:https://mirrors.tuna.tsinghua.edu.cn/CRAN/web/packages/available_packages_by_date.html
显然,这是个表格,很容易爬取:
library( rvest) library( tidyverse) library( lubridate) library( hrbrthemes) pkg <- "https://mirrors.tuna.tsinghua.edu.cn/CRAN/web/packages/available_packages_by_date.html" %>% read_html( ) %>% html_table( ) %>% .[[ 1 ] ] %>% as_tibble( ) %>% mutate( Date = ymd( Date) , Year = year( Date) , Month = month( Date) ) library( ggchicklet) pkg %>% subset( Year > year( today( ) ) - 8 ) %>% group_by( Year, Month) %>% count( ) %>% ggplot( aes( x = factor( Year) , y = n) ) + geom_chicklet( aes( fill = factor( Month) ) , width = 0.75 , radius = grid:: unit( 3 , "pt" ) ) + coord_flip( ) + scale_fill_manual( name = "Month" , values = c ( "#4E79A7FF" , "#A0CBE8FF" , "#F28E2BFF" , "#FFBE7DFF" , "#59A14FFF" , "#8CD17DFF" , "#B6992DFF" , "#F1CE63FF" , "#499894FF" , "#86BCB6FF" , "#E15759FF" , "#FF9D9AFF" ) , breaks = 1 : 12 , labels = month.name ) + theme_ipsum( base_family = enfont) + theme( axis.text.x = element_text( color = "gray60" , size = 10 ) ) + theme( legend.position = c ( 0.8 , 0.4 ) , legend.title = element_blank( ) , legend.box.background = element_blank( ) , legend.background = element_blank( ) , panel.background = element_blank( ) , plot.subtitle = element_text( family = cnfont, face = "italic" ) ) + guides( fill = guide_legend( ncol = 1 ) ) + labs( title = "Number of R packages on CRAN" , subtitle = "绘制:微信公众号 RStata" , caption = "Data Source: \nhttps://mirrors.tuna.tsinghua.edu.cn/CRAN/" , x = "" , y = "" )
按年统计:
pkg %>% subset( Year > year( today( ) ) - 8 ) %>% group_by( Year) %>% count( ) %>% ggplot( ) + geom_chicklet( aes( x = factor( Year) , y = n, fill = factor( Year) ) ) + geom_label( aes( x = factor( Year) , y = n + 300 , label = n) , family = enfont, color = '#444444' , label.size = 0 , size = 3 ) + scale_fill_manual( values = c ( "#4E79A7FF" , "#A0CBE8FF" , "#F28E2BFF" , "#FFBE7DFF" , "#59A14FFF" , "#8CD17DFF" , "#B6992DFF" , "#F1CE63FF" ) ) + theme_ipsum( base_family = enfont) + theme( legend.position = "none" , plot.subtitle = element_text( family = cnfont, face = "italic" ) ) + labs( title = "Number of R packages on CRAN" , subtitle = "绘制:微信公众号 RStata" , caption = "Data Source: \nhttps://mirrors.tuna.tsinghua.edu.cn/CRAN/" , x = "" , y = "" )
可以看到,今年截止到今天,CRAN 上一共有 r nrow(pkg) 个 R 包,今年(2026年)新发布和更新的有 r nrow(subset(pkg, Year == "2026")) 个!
使用 hotkeys 包设置输入快捷键 R 语言中经常会使用 %>%、->、<- 等符号,为了输入的更快,我们编写了一些小 R 包用来设置输入快捷键,可以使用下面的方法安装:
devtools:: install_github( 'r-stata/hotkeys' ) devtools:: install_local( 'hotkeys_0.2.0.tar.gz' )
然后就可以从 RStudio 界面上点击 Tools -> Modify Keyboard Shortcuts 进入快捷键设置界面,输入 insert 找到输入类快捷键的设置:
然后就可以设置自己喜欢的快捷键了。例如 %>% 设置为 Ctrl + Shift + M、|> 的快捷键设置成 Ctrl + Shift + . 等等。
点击这里跳转到 RStata 短书平台获取附件:R 语言和 RStudio 的安装、R Profile 的配置
评论