生信分析中常用的R語句

一、前言

好難受凯亮,今天的R崩了、昨天才安裝的包怎么報錯了哄尔、為啥我裝了這個包沒反應(yīng)假消,什么鬼怎么又亂碼了。這玩泥巴(╯‵□′)╯︵┻━┻
不行要佛系生活岭接,好久沒寫簡書了富拗,還是來整理下代碼吧┬—┬ノ('-'ノ)

二、常見的生信分析代碼整理

今天要說的事如題鸣戴,這些都是本人完成的流程中非常常見的R代碼啃沪,以下一一整理并為其注釋,沒事就經(jīng)常翻閱這些代碼瞧瞧窄锅。
不過話說回來创千,R真的好垃圾啊(/‵Д′)/~ ╧╧

老板來了,我永遠(yuǎn)喜歡R語言┬─┬ ノ( ' - 'ノ)

1.系統(tǒng)讀寫相關(guān)

設(shè)置工作路徑

設(shè)置工作路徑,大家習(xí)慣打開R程序追驴,而不是在固定的位置打開R械哟,那么很有可能你就要設(shè)置工作路徑,這樣做的目的是為了節(jié)省語句殿雪。注意一下暇咆,這是/左斜杠,windows下復(fù)制路徑是\斜杠丙曙,新人老容易犯這個錯誤

setwd("D:/R")
讀取文件

讀取txt文件爸业,./為當(dāng)前路徑,與OS文件讀取方法類似亏镰,參數(shù)sep = "\t"為以TAB制表符區(qū)分行列扯旷,comment.char = "#"為#號為注釋內(nèi)容,stringsAsFactors = F 為取消字符串轉(zhuǎn)換為因子拆挥,header = T為有表頭薄霜,fill=TRUE 如果為true,則在行長度不相等的情況下纸兔,將隱式添加空白字段惰瓜。./是指當(dāng)前目錄下的Human_ppi_symbol_2019_7.txt文件,當(dāng)然也可以寫絕對路徑汉矿。

a <- read.table("./Human_ppi_symbol_2019_7.txt",sep = "\t",comment.char = "#", stringsAsFactors = F,header = T, fill=TRUE)
寫入文件

寫入txt文件,不指定路徑則為當(dāng)前路徑下創(chuàng)建,學(xué)會舉一反三崎坊,參數(shù)有很多,這里并不能寫出所有洲拇,因此建議大家用?write.table查閱文檔奈揍,當(dāng)你不懂這個函數(shù)有什么參數(shù)的時候,就強(qiáng)烈建議赋续?+函數(shù)名來查閱文檔男翰,我就是這么學(xué)習(xí)的。

write.table(Gene, 'Gene.txt',sep = '\t', quote=F, row.names=F)

2.數(shù)據(jù)篩選相關(guān)

挑選特定的行和列

很多時候我們需要篩選數(shù)據(jù)纽乱,最常見的比如我希望得到某一列的固定邏輯的數(shù)據(jù)(我這里以大于900的數(shù)據(jù)為例)蛾绎,寫法是這樣的:
篩選大于900分的行,以a[x,y]為基礎(chǔ)鸦列,a$為catch住含有名為“combined_score”的列租冠,>900為篩選邏輯,前提要求數(shù)據(jù)類型為數(shù)字薯嗤,得到數(shù)據(jù)
這句話應(yīng)該這樣解析顽爹,a$combined_score > 900是邏輯值,返回True和Flase骆姐,你也可以理解為返回了對應(yīng)的行數(shù)镜粤,那么我們只要把這個行數(shù)再賦值給a[x,y]中的x捏题,那么得到的就是含有大于900的所有a 的x行。

a = a[a$combined_score > 900,]
取消科學(xué)計數(shù)法

取消科學(xué)計數(shù)法繁仁,有一些基因表達(dá)量太小或者p.Value太小涉馅,會用科學(xué)技術(shù)進(jìn)行計算,擔(dān)心后面篩除的時候會丟失

options(scipen = 400)
篩選同時滿足兩個要求的數(shù)據(jù)

篩選同時滿足P.Value < 0.05 和 logFC > 0.5的行黄虱,因為logFC有負(fù)數(shù)稚矿,可用abs絕對值化,這句話及上句都常用在做出來的DEG(差異表達(dá)基因)中

DEG_sort_p <- DEG_sort_p[DEG_sort_p$P.Value < 0.05 & abs(DEG_sort_p$logFC) > 0.5,]
常用語句

統(tǒng)計行列

dim(變量名)

行名稱更換

row.names(DEG_sort_p) = DEG_sort_p[,1]

把DEG_sort_p中的差異基因提出來捻浦,制作成一個data.frame

diff_Gene = data.frame(Gene=rownames(DEG_sort_p))

這里是蛋白互作的關(guān)鍵合并步驟晤揣,第①步,把基因中含有該蛋白的“protein1“merge得到

Gene1=merge(diff_Gene, String_hsa_PPIs_Symbol1, by.x = "Gene",by.y = "protein1",all=FALSE)

判斷蛋白基因是否在全在基因里朱灿,返回真假值為True

table(Gene$Gene%in%DEG_sort_p$DEG)

unique是去掉基因名字重復(fù)的基因昧识,只保留一個,保留有效基因

Gene=unique(data.frame(Gene=Gene[,2]))

判斷蛋白基因是否在全在基因里,返回真假值210122為True

table(Gene$Gene%in%DEG_sort_p$DEG)

unique是去掉基因名字重復(fù)的基因盗扒,只保留一個,保留有效基因

Gene=unique(data.frame(Gene=Gene[,2]))

簡單粗暴的合并行

Gene=rbind(Gene,diff_Gene)

把重復(fù)基因的行去掉

Gene=unique(Gene)

重命名行

colnames(data2)=c("Gene1","Gene2","score")

把data2的第一列變成character格式跪楞,這樣做的意義是有一些包要求輸入進(jìn)入格式是這種數(shù)據(jù)類型,
as.array()侣灶、as.data.frame()甸祭、as.matrix()、as.numeric()

data2$Gene1 <-as.character(data2[,1])

自創(chuàng)代碼:閱讀當(dāng)前目錄下所有文件褥影,如果里面包含GSE名稱的文件夾池户,則提取出,進(jìn)而閱讀里面包含exp_matrix的表達(dá)矩陣并進(jìn)行merge合并凡怎,要求這些GSE都是基于相同平臺校焦。意思是,當(dāng)前目錄下有N個GSE文件夾统倒,這些文件夾里面有各自已經(jīng)完成好的表達(dá)矩陣寨典,把這些表達(dá)矩陣都取出來并進(jìn)行merge合并成為一個大矩陣,適合做數(shù)據(jù)合并用房匆。

dir = list.dirs()
# 篩出路徑中包含GSE的文件夾
GSE_dir = dir[grep("GSE",dir)]
  # 循環(huán)獲取目錄凝赛,要求根目錄下必須含有GSE的文件夾,GSE文件夾內(nèi)含有exp_matrix名稱的表達(dá)矩陣坛缕,要求表達(dá)矩陣是相同平臺,輸出變量名為GSE_all
for (index in 1:length(GSE_dir)){
  if (index == 1){
    GSE_all <- read.table(paste(GSE_dir[index],"/exp_matrix.txt",sep=""), sep = "\t",stringsAsFactors = F, header = T, fill=TRUE, quote = "")
    GSE_name = strsplit(GSE_dir[index],"./", fixed = FALSE, perl = FALSE, useBytes = FALSE)
    print(GSE_name[[1]][2])
  }
  if (index >= 2){
    GSE_data <- read.table(paste(GSE_dir[index],"/exp_matrix.txt",sep=""), sep = "\t",stringsAsFactors = F, header = T, fill=TRUE, quote = "")
    GSE_all = merge(GSE_all,GSE_data,by.x = "Symbol",by.y = "Symbol")
    GSE_name = strsplit(GSE_dir[index],"./", fixed = FALSE, perl = FALSE, useBytes = FALSE)
    print(GSE_name[[1]][2])
  }
}

優(yōu)雅的增加一行捆昏,把行名稱加回去

GSEall_DEG_sort_p$Symbol = rownames(GSEall_DEG_sort_p)

求平均的函數(shù)赚楚,敲重要

meanfun <- function(x) {
  x1 <- data.frame(unique(x[,1]))
  colnames(x1) <- c("Symbol")
  for (i in 2:ncol(x)){
    x2 <- data.frame(tapply(x[,i],x[,1],mean))
    x2[,2] <- rownames(x2)
    colnames(x2) <- c(colnames(x)[i], "Symbol")
    x1 <- merge(x1,x2,by.x = "Symbol",by.y = "Symbol",all=FALSE)
  }
  return(x1)
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市骗卜,隨后出現(xiàn)的幾起案子宠页,更是在濱河造成了極大的恐慌左胞,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,185評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件举户,死亡現(xiàn)場離奇詭異烤宙,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)俭嘁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,445評論 3 385
  • 文/潘曉璐 我一進(jìn)店門躺枕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人供填,你說我怎么就攤上這事拐云。” “怎么了近她?”我有些...
    開封第一講書人閱讀 157,684評論 0 348
  • 文/不壞的土叔 我叫張陵叉瘩,是天一觀的道長。 經(jīng)常有香客問我粘捎,道長薇缅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,564評論 1 284
  • 正文 為了忘掉前任攒磨,我火速辦了婚禮泳桦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘咧纠。我一直安慰自己蓬痒,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,681評論 6 386
  • 文/花漫 我一把揭開白布漆羔。 她就那樣靜靜地躺著梧奢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪演痒。 梳的紋絲不亂的頭發(fā)上亲轨,一...
    開封第一講書人閱讀 49,874評論 1 290
  • 那天,我揣著相機(jī)與錄音鸟顺,去河邊找鬼惦蚊。 笑死,一個胖子當(dāng)著我的面吹牛讯嫂,可吹牛的內(nèi)容都是我干的蹦锋。 我是一名探鬼主播,決...
    沈念sama閱讀 39,025評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼欧芽,長吁一口氣:“原來是場噩夢啊……” “哼莉掂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起千扔,我...
    開封第一講書人閱讀 37,761評論 0 268
  • 序言:老撾萬榮一對情侶失蹤憎妙,失蹤者是張志新(化名)和其女友劉穎库正,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體厘唾,經(jīng)...
    沈念sama閱讀 44,217評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡褥符,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,545評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,694評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡静檬,死狀恐怖亩鬼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,351評論 4 332
  • 正文 年R本政府宣布,位于F島的核電站粗截,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏捣炬。R本人自食惡果不足惜熊昌,卻給世界環(huán)境...
    茶點故事閱讀 39,988評論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望湿酸。 院中可真熱鬧婿屹,春花似錦、人聲如沸推溃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,778評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铁坎。三九已至蜂奸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間硬萍,已是汗流浹背扩所。 一陣腳步聲響...
    開封第一講書人閱讀 32,007評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留朴乖,地道東北人祖屏。 一個月前我還...
    沈念sama閱讀 46,427評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像买羞,于是被迫代替她去往敵國和親袁勺。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,580評論 2 349

推薦閱讀更多精彩內(nèi)容