R 语言和 RStudio 的安装、R Profile 的配置

讲义材料已于 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:

install.packages('httr')

下面我们继续安装一些 R 包,部分包如果安装失败可以直接跳过,以后需要的时候再安装。安装过程中如果弹出对话框让选择是否,一律选择否或者 No:

# 安装 devtools
install.packages("devtools")
# tidyverse 系列的 R 包
install.packages("tidyverse", dependencies = TRUE)
# 安装 tinytex
install.packages("tinytex", dependencies = TRUE)
# 安装完成之后运行(实在无法成功可跳过,过程中出现的小错误可以忽略)
tinytex::install_tinytex()

# 安装一些 RMarkdown 模板
install.packages("rticles", dependencies = TRUE)
install.packages("xaringan", dependencies = TRUE)

# 安装 Shiny
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')

# 下面这个包是从附件中的离线安装包安装的,如果安装失败就多试几次
# 安装 ggchicklet
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)
# 设定字体,特别注意里面的 enfont 和 cnfont 是我最常用的两个字体。
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"
# 设定 ggplot2 绘图主题
theme_set(theme_ipsum(base_family = 'cnfont'))

# 这是设定 R 的基础绘图系统的绘图主题
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)

# 设定 ggplot2 的默认调色板
options(
ggplot2.continuous.colour = "viridis",
ggplot2.continuous.fill = "viridis"
)

# 默认使用 dplyr::
conflicted::conflicts_prefer(dplyr::filter())
conflicted::conflicts_prefer(dplyr::select())

# tidymodels::tidymodels_prefer(quiet = T) 的设置可以避免很多函数名称冲突问题
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"

# 设定 ggplot2 绘图主题
theme_set(theme_ipsum(base_family = cnfont))
print("已 ggplot2 绘图主题为 theme_ipsum()!")

# 这是设定 R 的基础绘图系统的绘图主题
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)

# 设定 ggplot2 的默认调色板
options(
ggplot2.continuous.colour = "viridis",
ggplot2.continuous.fill = "viridis"
)

# 默认使用 dplyr::
conflicted::conflicts_prefer(dplyr::filter())
conflicted::conflicts_prefer(dplyr::select())

# tidymodels::tidymodels_prefer(quiet = T) 的设置可以避免很多函数名称冲突问题
tidymodels::tidymodels_prefer(quiet = T)

注意上面的 pars$family <- cnfont 里面的字体应该使用你设置好的字体。

这样设定好之后保存、关闭 Profile 文件再重启 RStudio 即可生效。

基于这种设定,使用 R 基础绘图系统绘图的结果将会是这样的:

hist(iris$Sepal.Length)

使用 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)
# lubridate 是处理日期的一个 R 包
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 包用来设置输入快捷键,可以使用下面的方法安装:

# 从 GitHub 上安装:
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 的配置

评论