地理數據科學培訓班第一課之初識R語言

2021-03-02 走天涯徐小洋地理數據科學

歡迎收看明晚九點的直播講解:
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 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.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 即可獲取!

相關焦點

  • 數據科學養成記 之 R語言基礎(2)——關於R包
    在上一節的學習中,我們已經學習了如何將數據導入R中進行數據分析。R作為一種主力的分析語言有著其獨特的優勢:大量的R包可供大家使用,提供方便快捷的數據分析,挖掘。目前有上千個R包(R package)可供大家使用,可從cran-r 下載。
  • R語言-初識與數據結構
    S語言:1976年貝爾實驗室發展起來的數據交互分析系統;是一種高級程序語言,很好地統計應用快速開發系統。關於S語言更多信息見:http://cm.bell-labs.com/cm/ms/departments/sia/S/history.htmlScheme語言:Scheme 語言是計算機表面處理語言,該語言用於處理包含有表格的數據的程式語言,被廣泛地運用於人工智慧研究。
  • R 語言與數據挖掘直播培訓班
    眾所周知,R 語言作為統計計算和統計製圖的優秀工具,能夠幫助科研人更順利地發 Paper,能夠掌握這門複雜的開發語言是很多科研人的心願。 丁香園攜手張旭東老師專為醫學生及生信零基礎的初學者量身打造線下培訓課程《R 語言與數據挖掘培訓班》,從安裝軟體到差異表達分析、火山圖富集分析、生存分析、Cytoscape 網絡圖繪圖、GEO 與 TCGA 數據挖掘等,實時互動,不懂就問,再也不因為找不到 bug 抓耳撓腮了。
  • 深度| R vs Python:R是現在最好的數據科學語言嗎?
    Sharp Sight Labs 近日在 r-bloggers 上發表了一篇文章,論述了為什麼當今的數據科學工作者應該學習 R 語言的原因。為了給大家提供一個明晰的對比,我們在後面補充了 2016 年初的一篇文章:R vs.Python。
  • 杭州、上海 5 月場 | R 語言與表達數據挖掘培訓班開始招生
    然而還是會遇到問題:臨床醫生科研本就薄弱,做實驗攢數據勞心勞力;夢想升主治醫師,評職稱拿基金全要拼 SCI 文章;好不容易得到測序數據,聚類分析、富集分析還是不會做;想用 R 語言分析基因晶片,但是不知道如何入手,自學半年學不會;想做高水平的科學數據分析圖,但是連個熱圖都畫不出來。
  • 遙感科學國家重點實驗室舉辦第三屆陸面數據同化培訓班
    8月17日至20日,由遙感科學國家重點實驗室主辦的第三屆陸面數據同化培訓班在長春舉辦。來自全國各大專院校、科研機構的140餘名科研人員與學生參加了培訓。   實驗室主任施建成研究員主持培訓班開幕式,東北地理與農業生態研究所副所長黃鐵青研究員出席並發表講話。
  • IT工程師數據科學方向,該選擇Python語言還是R語言?
    伴隨著你的網頁點擊,亞馬遜推薦你感興趣的產品,LinkedIn自動給你推送匹配工作......這些聰明、精準而實時的決策背後,都是數據科學。數據科學大勢所趨,想要從事相關工作,應該選擇Pyhon還是R程式語言?
  • R數據科學--初見
    終於你跨越茫茫宇宙,來到生信星球,發現了初學者的新大陸前些天豆豆花花各入手一本學R必備的神書《R數據科學》,花花完結了零基礎入門R語言系列和ggplot系列。現在開始跟著這本書的思路走,仔細端詳R語言。如果你還不了解這本書,👇看這裡。
  • 易語言」,初識易語言第一課
    類似C語言第一課中的「你好,C語言」,這節課主要是向易語言打個招呼。新建一個windows窗口程序(雙擊圖標即可):易語言」易語言」比如改標籤字體的大小:易語言」就講到這裡,我們下期再見。
  • 「了不起的R語言」第一課:R與Rstudio的安裝
    騷年,你還在用SPSS跑數據嗎?真的不覺得自己有些OUT了?是時候為你打開新世界的大門,讓你多了解些了不起的R語言吧!
  • 數據科學中的Python與R
    各類常用的庫會得到開發者的更新維護,功能與效率會不斷完善,Pip和GitHub會及時對庫進行更新,你可以在第一時間下載安裝庫和體驗新的功能。國內外各大論壇、社區(stcakoverflow、CSND、知乎、經管之家等)也存在數量巨大的Python活躍用戶,遇到問題可以在上面提問並得到解決。
  • 全棧數據之R語言常用包和函數
    全棧數據之路系列:全棧數據之Linux常用命令總結全棧數據之MySQL常用命令總結全棧數據之Python常用工具和函數《R語言實戰》,這是高濤、肖楠等翻譯的一本書詳細全面介紹了入門、圖形、統計、回歸、方差、功效分析、廣義線性模型、主成分、因子分析
  • R語言數據清洗實戰——高效list解析方案
    杜雨:EasyCharts團隊成員,R語言中文社區專欄作者。興趣方向為:Excel商務圖表,R語言數據可視化,地理信息數據可視化。個人公眾號:數據小魔方(微信ID:datamofang) ,「數據小魔方」創始人。
  • 【語言班】R語言數據分析與可視化高級研修班(4.26-29)
    R語言是用於數據分析、數據可視化的高級程式語言,其功能包括:數據存儲和處理、科學計算工具;能夠進行幾乎所有的統計分析;內置豐富便捷的數據可視化功能
  • 《R語言使用者的Python教程——數據科學方法》
    今天推薦一本英文版好書《R語言使用者的Python教程——數據科學方法(Pythonfor R Users A Data Science Approach
  • R 語言和 Stata 中的數據轉換(透視/長寬數據轉換)
    歡迎各位培訓班的小夥伴收看明晚八點的直播課(專題課程):「R 語言和 Stata 中的數據轉換(透視/長寬數據轉換)」
  • 知識分享 | R語言——大數據分析的一把利劍
    有些人問我是否應該學習在學R語言的同時學習Python。我的答案基本上是否定的,除非你需要使用一種以上的語言,否則你應該選擇一種語言進行學習。專注於一種程式語言的原因是,你需要更多地關注過程和技術,而不是語法。你需要掌握如何通過數據科學工具來分析數據,以及如何解決問題。事實證明,R語言是最佳的選擇。
  • 社會科學研究中的R語言與數據可視化系列直播課
    當今市場上的數據可視化工具有很多,包括EXCEL, SPSS等,但效果差強人意。再來看R語言,R語言最初是統計學家開發的,因此統計計算和數據可視化就成了可在R身上最深的烙印,這也是R語言核心功能的兩大方向。然而就目前來看,R語言的功能已經遠遠超出了它的初衷,可以在諸多領域進行,比如數據挖掘、社交網絡、金融數據分析等。
  • 新書速遞 | Python數據科學實踐
    並且更深入的應該知道數據科學深刻的改變著科學研究的範式,商業社會的規則等等。那些講述數據科學之偉大,Python語言之優美,兩者結合之於實踐的文章已經有很多,這裡就不再贅述。我以自己的經歷來講講這方面的感受。初識Python。2011年,我有幸能在加州大學伯克利分校和一群有趣且瘋狂的人度過了美好的一年,當然還有我當時的女朋友Kino(如今的妻子)。
  • 數據科學養成記 之 R語言基礎(3)——excel數據導入
    經過昨天對包的學習,今天我們利用前兩節課學習的知識來對excel數據進行導入。被評為R語言和Excel讀取的神器。注意,openxlsx包僅適用於.xlsx格式文件。前期的xls格式文件可能還需要前兩種方法來讀取。除了以上三種方法,還有類似的包如xlsx、readxl。