歡迎收看明晚九點的直播講解:
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.pkgWindows 系統: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 工具(在終端運行):
安裝 pkg-config 和 gdal(一些 R 包的依賴,在終端運行):
brew install pkg-configbrew 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.exeMac 系統:https://download1.rstudio.org/desktop/macos/RStudio-1.3.959.dmg注意一定要先安裝 R 再安裝 RStudio!
安裝常用的一些 R 包可以運行下面的幾句命令快速的安裝一些 R 包,如果第一次安裝失敗,可以嘗試把 dependencies = TRUE 參數刪除重新運行一次試試。
首先安裝 usethis:
# 安裝 usethisinstall.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 包,部分包如果安裝失敗可以直接跳過,以後需要的時候再安裝:
# 安裝 devtoolsinstall.packages("devtools")# tidyverse 系列的 R 包install.packages("tidyverse", dependencies = TRUE)# 安裝 tinytexinstall.packages("tinytex", dependencies = TRUE)# 安裝完成之後運行tinytex::install_tinytex()# 安裝一些 RMarkdown 模板install.packages("rticles", dependencies = TRUE)install.packages("xaringan", dependencies = TRUE)
# 安裝 Shinyinstall.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 ProfileR 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.8pars$las <- 0pars$rect.border <- "black"pars$rect.lwd <- 4basetheme(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 <- cnfontpars$lab <- c(10,10,7)pars$cex.axis <- 0.8pars$las <- 0pars$rect.border <- "black"pars$rect.lwd <- 4basetheme(pars)
# 取消科學計數法的顯示options(scipen = 1)
# 設定 ggplot2 的默認調色板options( ggplot2.continuous.colour = "viridis", ggplot2.continuous.fill = "viridis")注意上面的 pars$family <- cnfont 裡面的字體應該使用你設置好的字體。
這樣設定好之後再重啟 R 即可生效。
基於這種設定,使用 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 運行下面的代碼然後選擇附件中的 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 即可獲取!