1. 程式人生 > 實用技巧 >R語言3函式與R包

R語言3函式與R包

生信技能樹R語言部分學習筆記

學習用Rmarkdown來寫程式碼,Rmarkdown可以將註釋、程式碼、執行結構一起展示的一種工具。

1. 函式與引數

(1)形式引數與實際引數
函式括號裡面等號前面的是形式引數,等號後面的是實際引數。形式引數是函式作者設計的,可以不寫;實際引數是使用者可以更改的。

(2)寫函式的函式
function(引數){函式主體}

Tips: 當一個程式碼需要複製貼上三次,就應該寫成函式或使用迴圈。

(3)預設引數
通常作者會設計很多引數,但是隻有前幾個是必須填的,其他的引數都有預設值。

2. R包(R package)介紹

程式包是什麼?
R程式包是多個函式的集合,具有詳細的說明和示例。
也有的R包只有資料,沒有函式
包含R函式、資料、幫助檔案、描述檔案等。

為什麼要安裝程式包?
特定的分析功能,需要用相應的程式包實現。
例如:作圖包ggplot2,差異分析包limma等等。

3. R包來源

(1) CRAN網站
安裝方法:install.packages()

(2) Bioconductor(生信方面的包)
安裝方法:BiocManager::install()

(3) github
安裝方法:devtools::install_github()

#括號裡寫作者使用者名稱加包名
devtools::install_github("jmzeng1314/AnnoProbe")
#網路問題經常導致github訪問不了,可選擇本地安裝
devtools::install_local("AnnoProbe-master.zip",upgrade
= F)

問題:CRAN、Bionconductor的R包本地安裝方式?

4. 用於R包安裝的函式

判斷從哪裡來/怎麼安
CRAN: install.packages()
Bionconductor: BiocManager::install()
Github:devtools::install_github()

安裝後加載
library(),require()

安裝的時候包的名字需要加引號,載入的時候不需要引號。

5.(國內)R包安裝前需要設定映象

5.1 常用映象

國內映象:清華映象,中科大映象
要分別設定CRAN和Bioconductor的映象,在RStudio中修改的是CRAN的映象。

清華映象(tuna,Beijing)
CRAN:

https://mirrors.tuna.tsinghua.edu.cn/CRAN/
Bioconductor: https://mirrors.tuna.tsinghua.edu.cn/bioconductor

中科大映象(ustc, Hefei)
CRAN: https://mirrors.ustc.edu.cn/CRAN/

5.2 如何設定映象

方法1:tools--global option-packages

方法2:程式碼設定

options("repos"=c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
options(BioC_mirror="https://mirrors.tuna.tsinghua.edu.cn/bioconductor")

6. R包安裝和使用的邏輯

(1)安裝包---> 載入包 ---> 使用包裡的函式
library()是檢查是否安裝成功的標準

(2)已安裝、不載入,直接使用

BiocManager::install()
dplyr::filter()

包名::函式名,表示顯示的指定用某個包裡的某個函式,通常用於實戰中僅用一次的函式,也適用於兩個包中的函式名有衝突的情況。

7.常見疑問

(1)大片提示資訊
檢查是否有error,沒有就忽略

(2)package not available
可能的原因:
原因1:包名寫錯
原因2:安裝命令使用錯誤
原因3:本機的R語言版本與包所要求的版本不符(極少)

(3)是否更新?
懶惰策略,能不更新就不更新,除非一直報錯。如果不想回答:安裝命令加上引數:update=F,ask=F

(4)載入A包,報錯B包不存在
問是否更新的、“不存在”的是依賴包
先安裝要求的包(B包),然後再安裝A包

(5)報錯中有connection或url、404、http
切換映象,檢查網路連線。如果都沒有問題,執行

options(download.file.method = 'libcurl')
options(url.method='libcurl')

再重新下載。

當安裝一個包時,如果直接使用install.packages(),則不管是否已經安裝這個包,都會重新安裝該包,較好的安裝方式是判斷式安裝:

if(!require(stringr)) install.packages("stringr")

如果已經安裝,則require(stringr)返回TRUE,於是!require(stringr)為FALSE,不執行後面的安裝,同時載入已經安裝的stringr包。
如果沒有安裝,則require(stringr)返回FALSE,於是!require(stringr)為TRUE,執行後面的安裝操作。

8. R包如何使用——獲取幫助

(1)快速檢視函式幫助文件
?max或者help("max")
看描述/引數/例項

example(seq)

(2)找R包介紹頁面(必應直接搜/CRAN/Bioconductor)

(3)少數R包有cheatsheets
eg:dplyr, tidyr

browseVignettes("clusterProfiler") 檢視網頁版說明書

is("package:clusterProfiler") 列出某個包裡所有的函式

str()檢視資料型別,class()檢視資料結構