R语言作业-20题

1.安装包

代码在 https://github.com/jmzeng1314/5years/blob/master/learn-R/tasks/3-r-20-codes.R

二.2、了解ExpressionSet对象,比如CLL包里面就有data(sCLLex) ,找到它包含的元素,提取其表达矩阵(使用exprs函数),查看其大小

3、了解 str,head,help函数,作用于 第二步提取到的表达矩阵

suppressPackageStartupMessages(library(CLL)) 
data(sCLLex)
exprSet=exprs(sCLLex)   
samples=sampleNames(sCLLex)
pdata=pData(sCLLex)
group_list=as.character(pdata[,2])
dim(exprSet)
head(exprSet) 
help("exprSet")
class(exprSet)

4.4安装并了解hgu95av2.db包

BiocManager::install("hgu95av2.db")
library(hgu95av2.db)
ls("package:hgu95av2.db") 
image.png

5.理解 head(toTable(hgu95av2SYMBOL)) 的用法,找到 TP53 基因对应的探针ID

toTable(hgu95av2SYMBOL)#显示基因探针与之对应的基因
对于TP53对应的探针采用三种方法
1,ids[which(ids$symbol=="TP53"),]
2,ids[grep("^TP53$",ids$symbol),]
3, filter(ids,ids$symbol=="TP53")

7.找到那些不在 hgu95av2.db 包收录的对应着SYMBOL的探针。

e1<-exprSet[!rownames(exprSet) %in% ids$probe_id,]
chpro_id<-as.data.frame(row.names(e1))

8.过滤表达矩阵,删除那1165个没有对应基因名字的探针。

e1<-exprSet[rownames(exprSet) %in% ids$probe_id,]
e2<-exprSet[match(rownames(exprSet),ids$probe_id, nomatch = 0),]

9.整合表达矩阵,多个探针对应一个基因的情况下,只保留在所有样本里面平均表达量最大的那个探针

dat=exprSet[rownames(exprSet) %in% ids$probe_id,]
ids$median=apply(dat,1,median)#对dat每一行求median值
ids=ids[order(ids$symbol,ids$median,decreasing = T),]
ids=ids[!duplicated(ids$symbol),]
dat=dat[ids$probe_id,]

10.把过滤后的表达矩阵更改行名为基因的symbol,因为这个时候探针和基因是一对一关系了。

rownames(dat)<-ids$symbol

11.对第10步得到的表达矩阵进行探索,先画第一个样本的所有基因的表达量的boxplot,hist,density , 然后画所有样本的 这些图

exprSet<-dat 
exprSet_L=melt(exprSet)
colnames(exprSet_L)=c('probe','sample','value')
exprSet_L$group=rep(group_list,each=nrow(dat))
p=ggplot(exprSet_L,aes(x=sample,y=value,fill=group))+geom_boxplot()
print(p)
image.png

12.理解统计学指标mean,median,max,min,sd,var,mad并计算出每个基因在所有样本的这些统计学指标,最后按照mad值排序,取top 50 mad值的基因,得到列表。

这题就得用apply函数了。

e_mean = tail(sort(apply(exprSet,1,mean)),30)
e_median = tail(sort(apply(exprSet,1,median)), 30)
e_max =tail(sort(apply(exprSet,1,max)),30)
e_min =tail(sort(apply(exprSet,1,min)),30)
e_sd =tail(sort(apply(exprSet,1,sd)),30)
e_var =tail(sort(apply(exprSet,1,var)),30)
e_mad =tail(sort(apply(exprSet,1,mad)),30)

13.根据第12步骤得到top 50 mad值的基因列表来取表达矩阵的子集,并且热图可视化子表达矩阵。试试看其它5种热图的包的不同效果。

top50gene=tail(sort(apply(exprSet,1,mad)),50)
top50gene=as.data.frame(top50gene)
top50genelist=rownames(top50gene)
ct=scale(top50genelist,center=T,scale=F) 
nmlztop50genelist=scale(ct,center=T,scale=T)
根据其他人的答案,要中心化和标准化,还不是很明白

14.取不同统计学指标mean,median,max,mean,sd,var,mad的各top50基因列表,使用UpSetR包来看他们之间的overlap情况。

暂时不会

15.第二步的基础上面提取CLL包里面的data(sCLLex) 数据对象的样本的表型数据

pd = pData(sCLLex)
group_list = as.character(pd[,2])
table(group_list)

16.对所有样本的表达矩阵进行聚类并且绘图,然后添加样本的临床表型数据信息(更改样本名)

out.dist=dist(t(exprSet),method='euclidean') 
out.hclust=hclust(out.dist,method='complete')
plot(out.hclust)
image.png

17.对所有样本的表达矩阵进行PCA分析并且绘图,同样要添加表型信息

pc <- prcomp(t(exprSet),scale=TRUE) 
pcx=data.frame(pc$x)
pcr=cbind(samples=rownames(pcx),group_list, pcx) 
p=ggplot(pcr, aes(PC1, PC2))+geom_point(size=5, aes(color=group_list)) +#能最大反映样本差异性的两个成分(PC1、PC2)
  geom_text(aes(label=samples),hjust=-0.1, vjust=-0.3)#label=samples可以加上样本名称
print(p)

18-20.根据表达矩阵及样本分组信息进行批量T检验,得到检验结果表格

目前功力不够,暂时还不会做

你可能感兴趣的:(R语言作业-20题)