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:
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()
檢視資料結構