相比于網(wǎng)頁工具嬉橙,使用編程語言處理科研數(shù)據(jù)的一大優(yōu)勢,在于高度的定制化颁督,以及批量處理數(shù)據(jù)的快捷性和高效性
目錄
批量處理——for循環(huán)批量計算組間差異
批量處理——apply批量計算組間差異
批量處理——for循環(huán)畫圖
對于批量處理數(shù)據(jù)的方法璧诵,之前使用for循環(huán)和apply語句進行處理過,但是不夠系統(tǒng)妒蔚,學(xué)習(xí)果子生信課程后有一個清晰的認(rèn)識,寫下來,一是可以調(diào)用方便鸥滨,二是自己寫過之后,才能算是完全掌握谤祖。當(dāng)然一切以解決問題為主婿滓,不陷于技術(shù)深究。
前言:剛開始接觸R時粥喜,只覺得是一項統(tǒng)計分析工具凸主,后來發(fā)現(xiàn)可以做生信分析,偶然間處理TCGA數(shù)據(jù)時容客,發(fā)現(xiàn)其竟然可以處理文件秕铛。我想好多推銷python用來自動化辦公,應(yīng)該也是編程語言的應(yīng)用之一缩挑。利用文件處理功能但两,解決了一次zotero文獻管理軟件導(dǎo)出的操作,可以說是解決實際問題供置。
1. 整理TCGA下載的數(shù)據(jù)
1.1數(shù)據(jù)特征
下載TCGA數(shù)據(jù)在TCGA數(shù)據(jù)官網(wǎng)網(wǎng)頁下載及gdc-client下載寫過谨湘,然后下載得到的表達(dá)數(shù)據(jù)并不是我們經(jīng)常使用的矩陣文件,而是一個個單獨的數(shù)據(jù)芥丧,這個時候需要將這些壓縮文件讀入一個文件夾,再進行合并续担。這個方法在整理從TCGA下載的數(shù)據(jù)寫過,這次單獨拿出來乖仇,練習(xí)一下。
1.2將表達(dá)數(shù)據(jù)放在同一個文件夾下面
之前的代碼
# multipling the multi-data into one file
dir.create('data_in_one')
for(dirname in dir('rawdata/')){
file <- list.files(paste0(getwd(),"/rawdata/", dirname), pattern = "*.counts.gz")
file.copy(from = paste0(getwd(),"/rawdata/",dirname,"/",file),to = "data_in_one")
}
經(jīng)過上課之后询兴,微調(diào)之后的代碼乃沙,其實是將代碼變得更加普遍適用诗舰。
### 使用for循環(huán)來批量做
for (dirname in dir("rawdata/")){
## 1.要查看的單個文件夾的絕對路徑
mydir <- paste0(getwd(),"/rawdata/",dirname)
## 2.找到對應(yīng)文件夾中的文件并提取名稱警儒,pattern表示模式眶根,可以是正則表達(dá)式
file <- list.files(mydir,pattern = "*.counts")
## 3.當(dāng)前文件的絕對路徑是
myfile <- paste0(mydir,"/",file)
## 4.復(fù)制這個文件到目的文件夾
file.copy(from = myfile,to = "data_in_one")
}
2.處理zotero文獻管理得到的文件
起因是有同學(xué)要把zotero某一項目下的文件pdf全部復(fù)制出來蜀铲,然后整體給導(dǎo)師边琉。遇到的問題是,適用zotero導(dǎo)出文獻后蝙茶,每個文獻又有一個單獨的文件夾,不方便查看钳恕,所以需要放在一個文件夾下面。
其實這個不算是必須事項忧额,因為文獻管理可以直接把doi發(fā)過去愧口,導(dǎo)入過程,自動下載耍属。但是對方也不太用文獻管理軟件,所以就使用上面的方法了厚骗。
導(dǎo)出選項
導(dǎo)出結(jié)果
然后在文件夾中創(chuàng)建R
寫入代碼
if (!dir.exists('./data_in_one/')) {
dir.create('./data_in_one/')
}
for (dirname in dir("./files/")){
## 1.要查看的單個文件夾的絕對路徑
mydir <- paste0(getwd(),"/files/",dirname)
## 2.找到對應(yīng)文件夾中的文件并提取名稱夫嗓,pattern表示模式冲秽,可以是正則表達(dá)式
file <- list.files(mydir,pattern = "*.pdf")
## 3.當(dāng)前文件的絕對路徑是
myfile <- paste0(mydir,"/",file)
## 4.復(fù)制這個文件到目的文件夾
file.copy(from = myfile,to = "data_in_one")
}
因為需要更改的是500+篇文獻,我只是復(fù)現(xiàn)的時候锉桑,用了幾個例子,所以技能也還是有用的攻柠。
后記:技多不壓身杉武,多一門技能辙售,就多一項可能解決問題的思路轻抱。
批量操作的應(yīng)用優(yōu)勢應(yīng)該還是體現(xiàn)在計算方面
后續(xù):相關(guān)性批量操作