资料及代码均来自生信技能树团队,感谢~
相关数据及习题集
- 初级10 个题目:http://www.bio-info-trainee.com/3793.html
- 中级要求是:http://www.bio-info-trainee.com/3750.html
- 高级要求是完成20题: http://www.bio-info-trainee.com/3415.html
- 统计专题 30题:http://www.bio-info-trainee.com/4385.html
- 可视化专题30题:http://www.bio-info-trainee.com/4387.html
学习笔记整理
.libPaths() #查找安装包路径
创建字符串向量:
a<-LETTERS
,a<-letters[1:10]
substr("abcde",1,4) #substr()用法 [1] "abcd"
-
dim()的用法:
a<-1:10 dim(a)<-c(2,5) pheatmap::pheatmap(a)
注意检查数据类型是否正确:
class()
、mode()
、typeof()
、str()
等判断、改变变量类型:
.is.*()
,.as.*()
Code中有批量注释按钮:Code->Comment/Uncomment lines
lapply(d,length) #lapply()的用法,对d中每个元素都length一下
-
选取变量时grep()、grepl()的用法:
> a V1 V2 V3 V4 V5 1 1 5 5 7 9 2 2 4 6 8 10 > index1<-grep("8",a$V4) #grep()的用法 > index2<-grepl("8",a$V4) #grepl()的用法 > b1<-a[index1,] > b1 V1 V2 V3 V4 V5 2 2 4 6 8 10 > b2<-a[index2,] > b2 V1 V2 V3 V4 V5 2 2 4 6 8 10
list中提取元素的小技巧,[]与[[]]的区别:[]取到的仍然是list, [[]]才能取到元素。即list[1]得到第一列表,list[[1]]得到元素。
读取文件:
read.table(" ",comment.char="!",header=T,sep="\t")
,可以按Tab键选取文件-
设定行名:
rownames(b)=b[,1]
;去掉某一列:
d<-d[,-1] #去掉d的第1列
去掉行名:
write.csv(b,"*.csv",row.names=F)
save(b, file = "b_input.Rdata") load("b_input.Rdata")
sort(a$v1) sort(a$v1)[1] sort(a$v1,decreasing = T)[1] #降序排列 #取最大最小值 max(a$v1) min(a$v1) #取四分位数+中位数 fivenum(a$v1) #去掉变量值<5000的元素 a$v1< 5000 table(a$v1 < 5000) b <- a[a$v1 < 5000,]
选取阈值的时候可以先画个箱型图看一下数据分布情况,比如
boxplot(a$Mbases~a$Assay_type)
取平均值:
#方法1
mean(b[1,])
mean(as.numeric(b[1,]))
#方法2
rowMeans(b)
#方法3 for循环
for (i in 1:nrow(b)) {
print(mean(as.numeric(b[i,])))
}
#方法4 apply函数
apply(b,1,function(x){ #第2个参数中,1代表行,2代表列
mean(x)
})
apply(b,1,mean)
- 排序+热图:sort默认是从小到大排序.
sort(apply(a,1,sd),decreasing = T)[1:50] #取top50
names=names(sort(apply(a,1,sd),decreasing = T)[1:50]) #获取探针名字
pheatmap::pheatmap(a[names,])
**Merge(): **
d=merge(a,b,by.x = 'Sample_Name',by.y = 'Accession')
> pheatmap(cbind(a1,a2)) > pheatmap(cbind(a1,a2),cluster_cols = F) #cluster_cols 是否依据颜色排序
-
给data.frame重命名(
names()
,paste()
),并画出简单的热图:a1<-matrix(rnorm(100),5,20) a2<-matrix(rnorm(100)+2,5,20) a3<-cbind(a1,a2) a3<-as.data.frame(a3) names(a3) ##paste()的用法 names(a3)<-c(paste("a1",1:20,sep="_"),paste("a2",1:20,sep="_")) library(pheatmap) pheatmap(a3)
-
strsplit()的用法
#“."是通配符,要用[]括起来 > strsplit("ENSG00000000003.13",split = "[.]") [[1]] [1] "ENSG00000000003" "13"
-
Library stringr
str_split(fruits, " and ") #返回list str_split(fruits, " and ", simplify = TRUE) #返回matrix
-
转换基因ID:
>a<-read.table("ensembl.txt") #strsplit("ENSG00000000003.13",split = "[.]") #strsplit("ENSG00000000003.13",split = "[.]")[[1]][1] >library(stringr) >str_split(a$V1,"[[.]]",simplify = T)[,1] [1] "ENSG00000000003" "ENSG00000000005" "ENSG00000000419" "ENSG00000000457" "ENSG00000000460" [6] "ENSG00000000938" >a$ensembl_id<-str_split(a$V1,"[[.]]",simplify = T)[,1] #a中增加了ensemble_id那一列 #安装org.Hs.eg.db(详情见上一篇学习笔记) library(org.Hs.eg.db) g2s<-toTable(org.Hs.egSYMBOL) g2e<-toTable(org.Hs.egENSEMBL) b<-merge(a,g2e,by="ensembl_id",all.x=TRUE) c<-merge(b,g2s,by="gene_id",all.x=TRUE) table(c$ensembl_id)[table(c$ensembl_id)>1] #查找重复出现的基因 c<-c[!duplicated(c$V1),] c<-c[match(a$V1,c$V1),] #按照a中V1的顺序给c排序 write.csv(c,"geneID2symbol.csv")