地理数据科学培训班第一课之初识R语言
欢迎收看明晚九点的直播讲解:
R 和 RStudio 的安装及 R Profile 的配置 & 初识 R 语言数据爬取
本次直播讲解将使用 Windows 系统的电脑演示。
直播信息:
直播时间:2020 年 7 月 11 日晚上 9 点; 直播地址:腾讯会议; 讲义材料:需要加入地理科学培训班获取。
R 和 RStudio 的安装是非常简单的,这里提供一些安装 Tips。在文章的最后我还通过一个案例带大家走进奇幻的 R 世界。
安装 R
下载页面:https://mirrors.tuna.tsinghua.edu.cn/CRAN/
我安装的 R 语言是 R version 4.0.2 (2020-06-22)
,该发行版的名字是 Arbor Day
。
如果你已经安装了 R 和 RStudio,可以运行下面的语句查看自己 R 版本的版本名称:
# 查看自己 R 版本
version$version.string
#> [1] "R version 4.0.2 (2020-06-22)"
# 查看自己 R 版本的名称
version$nickname
#> [1] "Taking Off Again"
根据自己的版本点击下面的链接即可直接下载 R 软件了(使用迅雷下载会很快):
Mac 系统: https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/macosx/R-4.0.2.pkg Windows 系统:https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/windows/base/R-4.0.2-win.exe
下载好之后一路安装即可。(如果你的电脑(Windows系统)是 32 位的,注意选择 32 位的安装)。
Windows 用户:安装 Rtools:Windows 构建工具(Mac 用户请跳过)
只有 Windows 用户需要安装这个工具:https://cran.r-project.org/bin/windows/Rtools/rtools40-x86_64.exe
如果你的电脑是 32 位的,下载这个安装:https://cran.r-project.org/bin/windows/Rtools/rtools40-i686.exe
安装完成之后还需要进行环境变量的配置,稍后我再介绍。
Mac 用户:安装 XQuartz(Windows 用户请跳过)
官网下载(很慢):https://dl.bintray.com/xquartz/downloads/XQuartz-2.7.11.dmg 从我的服务器上下载:https://tidyfriday.cn/assets/XQuartz-2.7.11.dmg
打开终端(Terminal)输入如下命令安装 homebrew:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
# 如果安装失败,可以运行下面的代码安装
/usr/bin/ruby -e "$(curl -fsSL https://tidyfriday.cn/homebrew/install)"
安装 Xcode 工具(在终端运行):
xcode-select --install
安装 pkg-config 和 gdal(一些 R 包的依赖,在终端运行):
brew install pkg-config
brew install gdal
安装 RStudio Desktop(用迅雷下载会很快)
下载页面:https://rstudio.com/products/rstudio/download/
最新版的 RStudio 是 1.3.959 版本的,各个系统的下载链接为(这个建议使用迅雷下载):
Windows 系统:https://download1.rstudio.org/desktop/windows/RStudio-1.3.959.exe Mac 系统:https://download1.rstudio.org/desktop/macos/RStudio-1.3.959.dmg
注意
一定要先安装 R 再安装 RStudio!
安装常用的一些 R 包
可以运行下面的几句命令快速的安装一些 R 包,如果第一次安装失败,可以尝试把 dependencies = TRUE
参数删除重新运行一次试试。
首先安装 usethis:
# 安装 usethis
install.packages("usethis")
配置 Rtools(仅 Windows 用户需要,Mac 用户请跳过)。
首先打开 RStudio Desktop:
# 运行
usethis::edit_r_environ()
# 在打开的 .Renviron 文件中输入下面的代码(注意不需要运行):
PATH="${RTOOLS40_HOME}\usr\bin;${PATH}"
随后按 Ctrl + S 保存,然后重启 RStudio。
可以检查 make 命令的位置来检查上述配置是否成功:
Sys.which("make")
## "C:\\rtools40\\usr\\bin\\make.exe"
如果没有问题,可以试试安装:
install.packages("jsonlite", type = "source")
如果安装成功了就说明配置成功了。
下面我们继续安装一些 R 包,部分包如果安装失败可以直接跳过,以后需要的时候再安装:
# 安装 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)
# 安装我写的一些 R 包
install.packages("hwordcloud", dependencies = TRUE)
install.packages("hchinamap", dependencies = TRUE)
install.packages("hpackedbubble", dependencies = TRUE)
install.packages("sankeywheel", dependencies = TRUE)
# 安装最近用到的一些 R 包
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("https://tidyfriday.cn/pkg/ggchicklet_0.5.2.tar.gz", repos = NULL, type = "source")
install.packages("https://tidyfriday.cn/pkg/awtools_0.2.1.tar.gz", repos = NULL, type = "source")
install.packages("https://tidyfriday.cn/pkg/ggtext_0.1.0.tar.gz", repos = NULL, type = "source")
用一段时间之后你的电脑上就会安装一大堆 R 包,例如我电脑上安装的 R 包有 1905个
(截止 2020年7月10号)。
library(tidyverse)
installed.packages() %>%
as_tibble() %>%
count() %>%
pull() %>%
paste("该电脑一共有", ., "个 R 包!") %>%
message()
#> 该电脑一共有 1905 个 R 包!
完整的名单(仅供参考):
installed.packages() %>%
as_tibble() %>%
select(Package, Version, License, Built) %>%
DT::datatable()
安装字体
我在附件中放了一个 font 文件夹,里面是我电脑上的所有用户字体。全选所有的字体文件,然后右键选择安装即可。
设置 R Profile
R Profile 里面的代码会在启动 R 的时候自动运行,创建 R Profile 文件可以使用:
usethis::edit_r_profile()
运行之后自动会打开一个文件,在里面输入你想要在 R 启动的时候自动运行的代码即可,可以参考我的:
里面的字体设置非常重要,大家不要直接照搬这里的代码,要掌握里面字体设置的方法。(视频讲解中有介绍)
注意如果字体设置没有生效可以重启下 RStudio 再试试。
Windows 系统:
# 加载包
pacman::p_load(ggplot2, dplyr, RColorBrewer, hrbrthemes, grDevices)
# 设定字体,特别注意里面有一个 enfont 和 cnfont 是我最常用的两个字体。
windowsFonts(
enfont = windowsFont("Cascadia Code"),
cnfont = windowsFont("思源宋体"),
)
enfont = "enfont"
cnfont = "cnfont"
# 设定 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"
)
Mac 系统参考:
# 加载包
pacman::p_load(ggplot2, dplyr, RColorBrewer, hrbrthemes)
print("已加载 ggplot2、dplyr、hrbrthemes 和 RColorBrewer!")
# 为了以后方便以后调用这些字体,我把我喜欢用的一些字体存储成一些简单的单词。
enfont = "CascadiaCode-Regular"
cnfont = "SourceHanSerifSC-Medium"
# 设定 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"
)
注意上面的 pars$family <- cnfont
里面的字体应该使用你设置好的字体。
这样设定好之后再重启 R 即可生效。
基于这种设定,使用 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 运行下面的代码然后选择附件中的 Yule-RStudio.rstheme
文件即可更换为我推荐的主题:yule-rstudio
rstudioapi::addTheme(file.choose(), apply = TRUE, force = TRUE)
这个主题是这样的:
一个小的练习:爬取 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 %>%
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")) +
theme_ipsum(base_family = enfont,
grid = "X") +
coord_flip() +
scale_fill_brewer(name = "Month",
palette = "Paired",
breaks = 1:12,
labels = month.name) +
theme(axis.text.x = element_text(color = "gray60",
size = 10)) +
theme(legend.position = "right") +
guides(fill = guide_legend(ncol = 1)) +
labs(
title = "Number of R packages on CRAN",
subtitle = "Created by TidyFriday @ tidyfriday.cn",
caption = "Data Source: \nhttps://mirrors.tuna.tsinghua.edu.cn/CRAN/",
x = "",
y = "")
按年统计:
pkg %>%
group_by(Year) %>%
count() %>%
ggplot() +
geom_chicklet(aes(x = factor(Year), y = n,
fill = factor(Year))) +
geom_label(aes(x = factor(Year),
y = n + 200,
label = n),
family = enfont,
color = '#444444',
label.size = 0,
size = 3) +
scale_fill_manual(
values = c(RColorBrewer::brewer.pal(5, "Paired"),
RColorBrewer::brewer.pal(10, "Paired"))
) +
theme_ipsum(base_family = enfont) +
theme(legend.position = "none") +
labs(
title = "Number of R packages on CRAN",
subtitle = "Created by TidyFriday @ tidyfriday.cn",
caption = "Data Source: \nhttps://mirrors.tuna.tsinghua.edu.cn/CRAN/",
x = "",
y = "")
可以看到,今年截止到今天,CRAN 上一共有 16029 个 R 包,今年新发布的 + 更新的有 5509 个!
附录
为了让大家更快熟悉 RStudio 这个 IDE(集成开发环境),这里提供了一份 RStudio 的速查表。在公众号后台回复 rstudio
即可获取!