电竞比分网-中国电竞赛事及体育赛事平台

分享

R語言for循環(huán)-批量完成相關(guān)系數(shù)計算

 醫(yī)科研 2021-01-25

  

歡迎來到醫(yī)科研,這里是白介素2的讀書筆記,跟我一起聊臨床與科研的故事, 生物醫(yī)學(xué)數(shù)據(jù)挖掘,R語言,TCGA、GEO數(shù)據(jù)挖掘。


在數(shù)據(jù)分析過程中,尤其是在做基因篩選時,常會應(yīng)用到批量篩選,這也是應(yīng)用R語言分析數(shù)據(jù)的優(yōu)勢之一。在這一點(diǎn)上往往在線工具不能提供這樣的功能。

我們來構(gòu)建一個虛擬數(shù)據(jù),來完成基因之間的批量分析,并導(dǎo)出結(jié)果

先產(chǎn)生一個矩陣

data<-matrix(rnorm(120),nrow=20,ncol = 6)

模仿一個矩陣數(shù)據(jù)

rownames(data)<-paste("gene",1:20,sep = "")
colnames(data)<-paste("sample",1:6,sep ="" )
head(data)
##          sample1    sample2    sample3     sample4    sample5     sample6
## gene1  0.6713704  0.9258705  0.6584580  0.87819034  1.3191532 -0.18602102
## gene2 -0.3275014  1.2083650  0.1699489  0.54841864  0.3195813 -0.04661051
## gene3  1.3187930  0.8165928 -0.6706707  0.11174014 -0.1358276 -0.43858189
## gene4 -0.8040756  0.3348103 -1.5573817 -0.45613542 -0.3221384 -0.59782362
## gene5 -0.9396341  0.7283671 -1.3389603 -0.50145046 -0.2183778  0.88841818
## gene6  1.1326463 -1.5588096  0.3842358  0.06078977 -1.0196727  0.61900583

實(shí)現(xiàn)批量完成基因間的相關(guān)系數(shù)計算

首先明確實(shí)現(xiàn)這個目的可以使用for循環(huán) ### 構(gòu)建好需要得出的結(jié)果表,包括基因名,相關(guān)系數(shù),Pvalue
在使用for循環(huán)前,需要先來思考for循環(huán)的三個部分

  • 輸出:即想得到的結(jié)果

  • 序列:如何進(jìn)行循環(huán)迭代(三種循環(huán)模式:位置,元素,名稱

  • 函數(shù)體:使用函數(shù)解決的問題

首先創(chuàng)建空向量

gene_name1<-c()##也可用vector
gene_name2<-c()
cor_r<-c()
pvalue<-c()

準(zhǔn)備好循環(huán)體-可使用嵌套的for循環(huán),完成完整的計算但不重復(fù)

注意第二個for循環(huán)的值為 i: nrow(data),這一點(diǎn)很巧妙

for (i in 1:nrow(data)){
  for (r in i:nrow(data)){
    g1=rownames(data)[i]
    g2=rownames(data)[r]
    c_r=cor(as.numeric(data[i,]),as.numeric(data[r,]),method="pearson")
    p=cor.test(as.numeric(data[i,]),as.numeric(data[r,]),method ="pearson")[[3]]
    ##保存每一步的數(shù)據(jù),而不可直接以空向量作為每一步運(yùn)行的結(jié)果
    gene_name1=c(gene_name1,g1)
    gene_name2=c(gene_name2,g2)
    cor_r=c(cor_r,c_r)
    pvalue=c(pvalue,p)
       }
}

輸出為數(shù)據(jù)框,導(dǎo)出結(jié)果

data_cor<-data.frame(gene_name1,gene_name2,cor_r,pvalue)
head(data_cor)
##   gene_name1 gene_name2      cor_r       pvalue
## 1      gene1      gene1  1.0000000 7.395571e-32
## 2      gene1      gene2  0.4436884 3.781395e-01
## 3      gene1      gene3  0.2553650 6.252788e-01
## 4      gene1      gene4  0.2900609 5.771108e-01
## 5      gene1      gene5 -0.3356649 5.154125e-01
## 6      gene1      gene6 -0.6095215 1.989414e-01
dim(data_cor)
## [1] 210   4

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多