"R實(shí)戰(zhàn)"專題·第1篇
編輯 | 科白君
本期推送內(nèi)容
R語(yǔ)言程序包的安裝與使用問題。編寫一份完整代碼時(shí)需要用到很多不同的函數(shù),這意味著需要各種各樣的程序包。目前,R語(yǔ)言含有1萬(wàn)多個(gè)程序包甚至更多。盡管常用的R包可能只有幾百或上千個(gè),但很多時(shí)候初學(xué)者在學(xué)習(xí)時(shí)常遇到安裝R程序包的報(bào)錯(cuò)問題。之前,我在安裝export包及其更新時(shí)遇到了各種坑,嘗試了很多種辦法才解決。這里,我總結(jié)了以下幾種被廣泛嘗試的安裝方法,希望對(duì)大家有所幫助。
以下是原文鏈接,想學(xué)習(xí)R語(yǔ)言的朋友可以持續(xù)關(guān)注微信公眾號(hào):科白君的土壤世界
01 R語(yǔ)言程序包的簡(jiǎn)介
R語(yǔ)言程序包是函數(shù)、數(shù)據(jù)、代碼的一個(gè)集合。R包中主要包含函數(shù)的含義及用法,還包括數(shù)據(jù)集和代碼示例等。只有將R包載入R平臺(tái)后,其R包里的函數(shù)才能被識(shí)別或讀取。加載后,使用者可以查詢到該R包的所有信息,有助于編譯代碼。
02 R語(yǔ)言程序包的主要來源
目前,R包主要來源于三個(gè)平臺(tái)。
1)CRAN存儲(chǔ)了R最新版本的代碼和文檔的服務(wù)器?(https://cran.r-project.org/)。
2) 生物信息學(xué)領(lǐng)域的Bioconductor平臺(tái),它提供的R包主要為基因組數(shù)據(jù)分析和注釋工具(https://bioconductor.org/)。
3) 面向開源及私有軟件的第三方平臺(tái)--Github。R包的作者更愿意將其存儲(chǔ)在該平臺(tái),因此很多時(shí)候需要在上面下載(https://github.com/)。
03 檢查可用的R語(yǔ)言程序包
1)我們先查詢當(dāng)前R包的存儲(chǔ)庫(kù)位置,可以通過?.libPaths ( )?函數(shù)完成。
.libPaths () #點(diǎn).需要注意容易遺漏
得到結(jié)果:電腦本身的R位置和本地位置,兩條路徑。

2)獲取所有已經(jīng)安裝的R包列表,利用?library ( )?函數(shù)完成。
library ()
結(jié)果如圖:該路徑下所有R包的列表。

04 R語(yǔ)言程序包的安裝方法
1)?CRAN平臺(tái)
我們使用?install.packages("package name")直接從CRAN安裝。
install.packages ("vegan")
# 如果要下載多個(gè)包
可以用 c ( ) 來實(shí)現(xiàn)install.packages (c ("package 1", "package 2", "package 3",···) )?
或手動(dòng)安裝,先從https://cran.r-project.org/web/packages下載所需的R包。把該R包保存著適當(dāng)?shù)谋镜匚恢?,然后再用代碼加載安裝。
install.packages (file_name_with_path, repos = NULL, type = "source")# 例子
install.packages ("C:\Users\ThinkPad\Desktop\vegan_2.5-7.zip", repos = NULL, type = "source")
再或者用以下辦法完成安裝tar.gz/zip格式的程序包。

2)?Bioconductor平臺(tái)
與CRAN安裝相似,先?source ("https://bioconductor.org/biocLite.R")?鏈接到Bioconductor,然后?biocLite ("package name")進(jìn)行安裝。如果下載過慢,用chooseBioCmirror ( )?更改鏡像。如果?source?失效,則根據(jù)網(wǎng)站里的介紹選擇BioManager : : install ( )?安裝。
#如果source無效,則看https://bioconductor.org/installsource("https://bioconductor.org/biocLite.R")
#然后用biocLite("package name")
#以下是https://bioconductor.org/install 的一種方法if(!requireNamespace("BiocManager",quietly=TRUE))
install.packages("BiocManager")BiocManager::install(version="3.10")#這是基于3.6R版本,如果是4.0R版本則使用version="3.12"chooseBioCmirror()#修改下載鏡像
BiocManager::install("ggtreeExtra")
再或者用以下途徑完成BioManager安裝:
install.packages("BiocManager") BiocManager::install("ggtreeExtra")
#指定版本安裝
BiocManager::install("ggtreeExtra",version="4.0")
3)?Github平臺(tái)
需要devtools包或remotes包進(jìn)行下載。先安裝Rtools軟件,然后安裝devtools或remotes,然后用?devtools / remotes : : install_github安裝,需記住作者和程序包的名字。例如YuLab-SMU / ggtreeExtra,通常由包的原作者自己取的,各式各樣的名稱都有。
#使用install_github()前需要預(yù)裝rJava、devtools/remotes包#其中windowsJava環(huán)境需要配置,基本思路是:#先下載安裝jdk,然后添加jdk路徑到新建的系統(tǒng)變量#具體操作流程可以學(xué)習(xí)https://blog.csdn.net/weixin_45915507/article/details/105786961#devtools包
install.packages("devtools")library(c("rJava","devtools"))install_github("YuLab-SMU/ggtreeExtra")
#或者
if(!requireNamespace("devtools",quietly=TRUE)){
install.packages("devtools")
}
devtools::install_github("YuLab-SMU/ggtreeExtra")
#remotes包
install.packages("remotes")
library("remotes")
install_github("YuLab-SMU/ggtreeExtra")
#或者
if(!requireNamespace("remotes",quietly=TRUE)){
install.packages("remotes")
}
remotes::install_github("YuLab-SMU/ggtreeExtra")
此外,有作者開發(fā)了?githubinstall 包,與CRAN的安裝方式一致,但注意使用前先安裝Rtools軟件。安裝時(shí)我們僅需輸入包的名稱,即可完成下載。
install.packages("githubinstall")
library("githubinstall")
githubinstall("ggtreeExtra")
05 R語(yǔ)言程序包的使用方法
1) 加載R包的方法:library ("package name")?和require ("package name")?函數(shù)。此外,最近有新的方法可以一次性載入多個(gè)R包。先install.packages ("pacman"),然后library ("pacman"),用該R包中的一個(gè)函數(shù)--p_load ( )?函數(shù)完成。即使你所安裝的R包與當(dāng)前R環(huán)境不匹配(package is not avaliable for the R version) ,該函數(shù)仍能夠?qū)ζ浒惭b。對(duì)于pacman包中大部分函數(shù),不需要對(duì)括號(hào)內(nèi)packages使用引號(hào)" "。
#正常加載程序包的方法
library()
require()
#一次性加載多個(gè)程序包的方法
if(!require("pacman"))install.packages("pacman")
library("pkg1"); library("pkg2")? # library (R包名)?用;?然后記得放在同一行要不然會(huì)報(bào)錯(cuò)
library(c("pkg1","pkg2"...))?
#下載pacman包
library("pacman")
#library加載pacman包
p_load(ggplot2,ggthemes,dplyr,readr,showtext,export) #p_load需要pacman包才能運(yùn)行
2) 查看R包的方法:①查看默認(rèn)加載的R包,getOption("defaultPackages")?函數(shù);②查看已加載的R包,(.packages())?或者?search ( )函數(shù);③查看所有已安裝的R包,(.packages(all.available = T))、installed.packages()、library()?函數(shù)。
#查看默認(rèn)加載的R包
getOption("defaultPackages")
#查看已加載的R包
(.packages())
#查看所有已安裝的R包
(.packages(all.available=T))
installed.packages()
library()
3) 卸除或者卸載R包的方法:①卸除R包,非卸載,detach("package:ggplot2")?函數(shù);②卸載一個(gè)或者多個(gè)包,remove. packages(c("package1","package2") ..., lib = file.path("path_to_library"))?函數(shù)。
# 注意是卸除,而非卸載,意味著把包從R運(yùn)行環(huán)境中徹底去除,只是不希望該包被加載使用。在使用包的同名函數(shù)發(fā)生沖突時(shí),可以檢驗(yàn)函數(shù)依賴性。library ("ggplot2") detach ("package:ggplot2") / require ("ggplot2") pkg <- "package:ggplot2"
# "package1","package1"表示包名,即可以一次性卸載多個(gè)包。remove. packages (c ("package1", "package2"), lib = file.path ("path_to_library") )# "path_to_library"表示存儲(chǔ)R包的library路徑,通常情況下只輸一個(gè)路徑即可。使用命令.libPaths ( )可以查看庫(kù)路徑。
# 例子 remove.packages (c ("zoom"), lib = file.path ("C:/Program Files/R/R-3.6.1/library") )
4) 咨詢函數(shù)和R包幫助的方法:①help("package name")?函數(shù),如?help ("ggplot2"),再或者??ggplot2?來查看ggplot2包的幫助(引號(hào)可以省略);②example ("ggplot2")?可以查看ggplot2包里的示例;③data ( )?列出當(dāng)前已經(jīng)加載包中所含的所有可用示例的數(shù)據(jù)集。
# 利用幫助代碼查詢所需要的R包
help ("ggplot2")
# 或者
?ggplot2
# 查看R包里的示例
example ("package name")?
# 列出已加載R包中的所有可用示例的數(shù)據(jù)集
data ( )?
Tips:
1) 使用R包的時(shí)候,常常看到成功下載了R包后,我們可以利用R包與函數(shù)名的聯(lián)用代碼,主要是這個(gè)符號(hào)" : : "。For exam.,用?devtools : : install_github ( )。符號(hào): : 表示符號(hào)前是R包,以及符號(hào)后為該R包中的函數(shù),這更加明確了代碼,即某R包下某函數(shù)的運(yùn)行。或者,我們也可以把代碼分開運(yùn)行。下載完R包后,用 library ( ) 先載入所需R包,然后再直接用函數(shù)運(yùn)行。
2) 卸除R包的代碼可熟記,隨著你R語(yǔ)言知識(shí)掌握的越來越多,代碼越來越多,函數(shù)越來越多,同名函數(shù)也會(huì)隨之出現(xiàn),?detach ("package:pkg name")?函數(shù)能幫你。
3) 通常一些函數(shù)名中自帶點(diǎn) (.),這個(gè)要注意,非常容易遺漏。網(wǎng)上有些代碼在完成后,可能沒有檢查,不小心遺漏了 . ,導(dǎo)致很多初學(xué)者一臉懵逼,走了很多彎路,浪費(fèi)了很多時(shí)間。因此,希望這份推文能夠幫助大家少走彎路吧。
4)?記得用help (),記得help (),記得help (),不懂的一定要學(xué)會(huì)用help ( )。該函數(shù)的功能非常強(qiáng)大,它如同你學(xué)習(xí)過程中的老師,只要你看的懂英文,就能把R語(yǔ)言學(xué)好。
目前,根據(jù)自己所學(xué)的知識(shí)以及網(wǎng)上找到的素材,不能說涵蓋了所有,但足夠初學(xué)者學(xué)習(xí)和使用~ 至于新的知識(shí),需要大家在學(xué)習(xí)時(shí)留心喲~
想繼續(xù)學(xué)習(xí)R語(yǔ)言的朋友可以關(guān)注微信公眾號(hào) :科白君的土壤世界