Day15-R學(xué)習(xí)-生信人應(yīng)該這樣學(xué)R語言-筆記(轉(zhuǎn)載)

01. 介紹r語言及rstudio編輯器

安裝r及rstudio
打開rstudio編輯器:4塊
1.新建腳本契吉,markdown, 寫source代碼诡渴,點(diǎn)任何地方會進(jìn)行下一步捐晶。
2.命令在console運(yùn)行,初學(xué)一步一步運(yùn)行代碼妄辩,上下左右鍵看歷史命令記錄惑灵。
3.history為歷史記錄,可以to source 或 to console進(jìn)行重新運(yùn)行,environment環(huán)境變量眼耀,賦值的變量會出現(xiàn)在這個(gè)位置英支。
4.files查看有哪些文件或?yàn)g覽文件
plot顯示畫出的圖,dev.off()關(guān)閉畫板
packages顯示安裝的所有包哮伟,.libPaths()顯示包安裝路徑
Help 幫助文檔查看運(yùn)行函數(shù)example干花,體會如何使用該函數(shù)

定位當(dāng)前文件位置:getwd()

02. R語言基礎(chǔ)變量講解

變量類型
**1.向量vector **
a=c(1,2,3)
b=c(1,'2',3)
class() 查看變量類型(a為numeric妄帘,b為character)

可以用函數(shù)創(chuàng)建向量,或直接使用內(nèi)置變量池凄,左邊變量抡驼,右邊值。
數(shù)字不加引號修赞,字符串加引號(*單引號或雙引號一般可通用婶恼,當(dāng)值內(nèi)本身含有單引號時(shí),需用雙引號柏副。例如:a='Hello World!'a="Hello World!"輸出內(nèi)容相同.b="This's a nice example."b='This's a nice example.'不同。)

2.矩陣matix
向量加維度為矩陣 dim()加維度蚣录,矩陣中任何一個(gè)元素類型發(fā)生變化割择,其他元素的類型也會變化。
取元素的方式:1.通過下標(biāo)來取萎河,#逗號左邊是行右邊是列 a[,]; 2.邏輯符取
判斷元素類型: class(), str()

3.數(shù)組array

4.data.frame()數(shù)據(jù)框
轉(zhuǎn)變其中一個(gè)元素的類型荔泳,其他元素的類型不變

is.系列函數(shù),as.系列函數(shù)
是什么函數(shù)和轉(zhuǎn)變?yōu)槭裁春瘮?shù)(用Table鍵補(bǔ)全時(shí)可看到很多函數(shù))

提問方式
新建文件夾虐杯,放入需要提問/報(bào)錯(cuò)的“.Rproj”以及代碼".R"標(biāo)注報(bào)錯(cuò)的位置玛歌,發(fā)壓縮包。
如果其中有變量擎椰,報(bào)錯(cuò)之前一步寫
save(filename,file='input.Rdata')
load(file='input.Rdata')
然后注釋掉load之前的代碼(加上#)

5.列表list
用'$'從列表中取出的是元素,數(shù)據(jù)框中取出的是一列
length()有多少元素支子,lapply()對每個(gè)元素操作,返回list达舒,用unlist()讓返回值為character值朋,用as.numeric()將其轉(zhuǎn)變?yōu)閿?shù)值型。

取下標(biāo)

  1. 用下標(biāo)取索引
    b[,]逗號左行右列巩搏。若沒有該元素昨登,返回NA;若有贯底,返回對應(yīng)元素
  2. 用判斷方式取下標(biāo)
    b[,c(F,F,T,F,F,)]取b第三列的元素

read.table()函數(shù)讀取table
grep()#搜索函數(shù)丰辣,例grep('RNA-Seq',a$Assay_Type)搜索在a的Assay_Type一列中,搜索含有RNA-Seq的下標(biāo)禽捆。
grepl()#取匹配到的所有的行笙什,返回TRUE/FALSE,例grepl('RNA-Seq',a$Assay_Type)

取list
list[]取元素,不能取元素里的內(nèi)容睦擂,拿出的元素可能還是一個(gè)list得湘,如果用[[*]][*]取出的是元素里面的內(nèi)容

03. 外部數(shù)據(jù)導(dǎo)入導(dǎo)出

讀入
1.直接用import dataset
2.代碼讀取
read.table('filename',sep='\t',header = T)#參數(shù)與參數(shù)之間用逗號分開,sep指定制表符顿仇,header加上表頭淘正。

write.csv()#讀出為csv文件

取b第一列作為b的行名摆马,然后去掉第一列
row.names(b)=b[,1]
b=[,-1]

保存為R讀取的格式,避免讀入讀出時(shí)格式的更改
save(b,file = 'b_input.Rdata')
load(file = 'b_input.Rdata')

04. 中級變量操作

讀入數(shù)據(jù)
read.table(filename,header = T,sep = '\t')
read.table(tablename,comment.char = "!",header = T,sep = '\t')#手動指定注釋符鸿吆,以囤采!開頭的不讀入comment.char = "!"

讀出csv文件,并且去掉行名兩種方式
write.csv(b,'tmp.csv',row.names=F)
write.table(b,'tmp.csv',sep = ',')

英文單詞為函數(shù)惩淳,函數(shù)有參數(shù)蕉毯,互通
sort()#分類
max()#最大值
min()#最小值
fivenum()#包括最小值, 25%分位數(shù), 中位數(shù), 75%分位數(shù), 最大值

table()#查看多少個(gè)元素
boxplot(y~x)#分組取域值,可用boxplot查看峰位數(shù)
先分組思犁,分別賦值,"="是賦值代虾,"=="是判斷,
rna=a[a$Assay_type=='Rna-Seq',]#a中Assay_type這一列中Rna-Seq對應(yīng)的行
wxs=a[a$Assay_type=='WXS',]#a中Assay_type這一列中WXS對應(yīng)的行

表達(dá)矩陣激蹲,不同的表達(dá)量
str(mean(b[1,]))#取b的第一行平均值報(bào)錯(cuò)棉磨,查看其類型
mean(as.numeric(b[1,]))#轉(zhuǎn)換為數(shù)值型取均值
head(rowMeans(b))#對所有的行取均值,查看前10個(gè)

取b中行的均值
rowMeans(b)#直接用函數(shù)
for (i in 1:nrow(b)){ print(mean(as.numeric(b[i,])))}#用循環(huán)
apply(b,1,function(x){mean(x)})#apply函數(shù)
apply(b,1,mean)#與上一個(gè)相同

有函數(shù)可直接用函數(shù),沒有函數(shù)可以自定義后進(jìn)行操作
rowMax=function(x){apply(x,1,max)}#定義一個(gè)函數(shù)
rowMax(b)#用定義的函數(shù)進(jìn)行操作

向量取元素直接寫下標(biāo)学辱,data.frame()list()取元素[,]左邊取行右邊取列

top50的方差對應(yīng)的基因名做熱圖
cg=names(sort(apply(b,1,sd),decreasing = T)[1:50])
library(pheatmap)
pheatmap(b[1:50,])
pheatmap(sample(1:nrow(b),50))#隨機(jī)選取50個(gè)方差

05. 熱圖

不同大小的數(shù)據(jù)達(dá)標(biāo)不同顏色的深淺
rnorm(n, mean = 0, sd = 1)#隨機(jī)正態(tài)分布

畫個(gè)熱圖

a1=rnorm(100)
#dim加維度
dim(a1)=c(5,20)
a2=rnorm(100)+2
dim(a2)=c(5,20)
#as.data.frame將向量變?yōu)榫仃?b=as.data.frame(cbind(a1,a2))
#paste函數(shù)給a1和a2取名并以此作為b的名字看熱圖的變化乘瓤,
names(b)=c(paste('a1',1:20,sep = '_'),paste('a2',1:20,sep = '_'))
#加載pheatmap包
library(pheatmap)
#加注釋信息
tmp=data.frame(group=c(rep('a1',20),rep('a2',20)))
rownames(tmp)=colnames(b)
pheatmap(b,cluster_cols = F) #cluster_cols = F 不進(jìn)行排序

pheatmap學(xué)習(xí),查看example
?pheatmap

06. 選取差異名明顯的基因的表達(dá)矩陣?yán)L熱圖

#均一化(normalization)調(diào)整差異過大的數(shù)策泣,轉(zhuǎn)置-scale-轉(zhuǎn)置衙傀。
n=t(scale(t(dat[cg,])))
n[n>2]=2#大于二的值均等于二
n[n<-2]=-2#小于負(fù)二的值均等于負(fù)二

?scale()#查看scale函數(shù)的用法

若代碼過長,可以定義一個(gè)函數(shù)將代碼包裹起來萨咕,后面如果有需要可以直接用不重復(fù)寫代碼
d_h <- function(dat,group_list){*}
d_h(dat,group_list)

07. id轉(zhuǎn)換

#矩陣a的V1列元素含有以'.'分割的內(nèi)容统抬,想要去除‘.’后的內(nèi)容
library(stringr)#載入stringr
str_split(a$V1,'[.]',simplify = T)[,1]#用str_split()函數(shù),simplify=T返回值為字符型矩陣任洞,F(xiàn)返回為字符型向量蓄喇,[,1]取第一列

library(org.Hs.eg.db)#加載org.Hs.eg.db包
toTable()#org.Hs.eg.db包規(guī)定讀入數(shù)據(jù)用toTable

#兩個(gè)數(shù)據(jù)框做關(guān)聯(lián),兩個(gè)數(shù)據(jù)框共有相同的列/行名,保留沒有關(guān)聯(lián)上的元素 
merge(a,b,by='*',all.x=T)
#出現(xiàn)的頻率交掏,對大于1的做統(tǒng)計(jì)
table(table(*)>1)
table(*)[table(*)>1]
#dataframe(d)的行去重
d=d[!duplicated(),]
#a所在的順序放在b這邊來
match(a,b)

08. 任意基因任意癌癥表達(dá)量分組的生存分析

一個(gè)基因在TCGA數(shù)據(jù)庫中的各個(gè)癌癥的生存分析
網(wǎng)頁中輸入感興趣的基因妆偏,分組(高低表達(dá)量),下載數(shù)據(jù)盅弛,
Rstudio中讀入數(shù)據(jù),ggstatsplot包中的代碼進(jìn)行分析

a=read.table('*.csv',header = T,sep = ',',fill = T)
ggbetweenstats(data=a,x='Group',y='Expression')

添加Group和Expression最好復(fù)制加'',避免打錯(cuò)和不識別钱骂。
學(xué)會基礎(chǔ)變量及函數(shù)操作,然后對包的說明書進(jìn)行學(xué)習(xí)挪鹏,數(shù)據(jù)應(yīng)用

09. 任意基因任意癌癥表達(dá)量和臨床性狀關(guān)聯(lián)

網(wǎng)頁中輸入感興趣的基因见秽,下載數(shù)據(jù),導(dǎo)入Rstudio
a=read.table('*.txt',header = T,sep = '\t',fill = T)
列名賦予簡單的值讨盒,dat與之前寫過的代碼中一致解取,不需改動代碼可直接運(yùn)行(個(gè)人習(xí)慣)

colnames(a)=c('id','stage','gene','mut')
dat=a

10.表達(dá)矩陣的樣本的相關(guān)性

cor() 關(guān)聯(lián)函數(shù)

#先安裝Bioconductor的代碼,需要R版本3.5.0
if (!requireNamespace("BiocManager"))
    install.packages("BiocManager")
BiocManager::install()

Bioconductor三個(gè)包:airway(數(shù)據(jù)包),Annotatiobdbi(注釋包)和GenomicFeatures(功能函數(shù)包)

#加載數(shù)據(jù)返顺,獲取表達(dá)矩陣,查看表達(dá)禀苦,用dim()維度函數(shù)獲得矩陣行列情況
data(airway)
exprSet=assay(airway)
colnames(exprSet)
dim(exprSet)
#樣本與樣本之間的相關(guān)性蔓肯,
cor(exprSet[,1],exprSet[,2])

相關(guān)性很高警惕兩種情況
1.同一個(gè)樣本技術(shù)重復(fù)
2.大多數(shù)值為低表達(dá)值或零,掩蓋真實(shí)相關(guān)性
cor(exprSet)#整個(gè)樣本做相關(guān)性

#篩選數(shù)據(jù)振乏,例如一個(gè)基因表達(dá)量大于一樣本量少于5,用dim()維度函數(shù)獲得矩陣行列情況蔗包,可以與之前的dim()做比較
x= exprSet[1,]
table(x>1)
true=1,false=0
sum(x>1)>5
exprSet= exprSet[apply(exprSet,1,sum(x>1)>5),1]
#繼續(xù)篩選,edgeR::cpm()函數(shù)去除文庫大小差異慧邮,mad的前50個(gè)變化最大的基因
#最后cor做分析,畫熱圖
M=cor(log2(exprSet+1))

#畫heatmap 加注釋信息调限,先分組(group_list)并轉(zhuǎn)為一個(gè)數(shù)據(jù)框,加注釋信息(多少列不重要误澳,行名等于矩陣的列名很重要)tmp=data.frame(g=group_list)
rownames(tmp)=colnames(M)
library(pheatmap)
pheatmap(cor(exprSet),annotation_col = tmp)

11.芯片表達(dá)矩陣下游分析

構(gòu)建表達(dá)矩陣耻矮,分組信息

#單個(gè)做差異分析
t.test(exprSet[1,]~ group_list)
boxplot(exprSet[1,]~ group_list)
#或用limma()包,構(gòu)造一個(gè)design矩陣,矩陣中顯示分組信息屬于(值為1)不屬于(值為0)

12.RNA-seq表達(dá)矩陣差異分析

airway()
assay()
表達(dá)矩陣忆谓,分組準(zhǔn)備淘钟,用DEseq2()
統(tǒng)計(jì)學(xué)相關(guān)的知識:statquest

原文

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市陪毡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌勾扭,老刑警劉巖毡琉,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異妙色,居然都是意外死亡桅滋,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門身辨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來丐谋,“玉大人,你說我怎么就攤上這事煌珊『爬” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵定庵,是天一觀的道長吏饿。 經(jīng)常有香客問我,道長蔬浙,這世上最難降的妖魔是什么猪落? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮畴博,結(jié)果婚禮上笨忌,老公的妹妹穿的比我還像新娘。我一直安慰自己俱病,他們只是感情好官疲,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布袱结。 她就那樣靜靜地躺著,像睡著了一般袁余。 火紅的嫁衣襯著肌膚如雪擎勘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天颖榜,我揣著相機(jī)與錄音棚饵,去河邊找鬼。 笑死掩完,一個(gè)胖子當(dāng)著我的面吹牛噪漾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播且蓬,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼欣硼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了恶阴?” 一聲冷哼從身側(cè)響起诈胜,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎冯事,沒想到半個(gè)月后焦匈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡昵仅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年缓熟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片摔笤。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡够滑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吕世,到底是詐尸還是另有隱情彰触,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布寞冯,位于F島的核電站渴析,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏吮龄。R本人自食惡果不足惜俭茧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望漓帚。 院中可真熱鬧母债,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至衙熔,卻和暖如春登颓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背红氯。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工框咙, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人痢甘。 一個(gè)月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓喇嘱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親塞栅。 傳聞我的和親對象是個(gè)殘疾皇子者铜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345