生信人应该这样学R语言--Jimmy,20讲
积跬步,至千里
1.介绍R语言及RStudio
1.1 安装R 包和Rstudio
1.2Rstudio四个区块,区块,history(to source,to console) 和environment;区块,files,plot,packages;区块,console;通过看代码来学习;R.project 后边重点讲;
2.R语言基础变量
2.1 五种基本变量 :向量型;向量添加维度就是矩阵;数据框;list;数据变量建立索引 index,数据库grep('RNA-seq',a$Assay_type),list的话用逻辑变量来取,单括号[] 和双括号[[ ]] 的区别as.numeric(unlist(lapply(d,length)))>2,
小知识点总结:$取一个子集,length()看有多少个子集,lapply(d,length);class(),str()
is.函数,as.函数;save(b,'input.Rdata') 来解决报错,解决问题的打包方法,批量注释code ,comment;class(), mode(), typeof();grep('RNA-seq',a$Assay_type)
3.数据的导入和导出
读入:read.table("文件名“,各种参数), 参数1,指定分割“sep=‘\t’”, 指定comment.char='!' ,指定注释信息,header 指定标题;
读出:write.csv (),对数据框进行编辑,rownames(b)=b[,1] ,b=b[,-1]
保存数据:save(b. file="input.Rdata),载入,load(file=);
作业:读入excel,保存数据去掉行名;
4.中级变量操作;
简单运算,逻辑运算,布尔运算;数学函数;理解循环的概念;
write.csv 或 read.line; sort(,decresing=T),max(),mix(),fivenum(), b[a$exp<500,], rna=a[b$type=="rna",],b=log2(b)‘,str(b[,1]),rowMean(b) 每一行取平均值;as.numeric(b[,1]), apply(a,1,mean);定义函数:rowMax=function(x){apply(x,1,max)};
Jimmy<-function(b){for i : nrow(b), x=as.numeric(b[i,]), y=x[1]+x[2],print y}; sort(apply(b,1,sd),decrease=T)[1:50];names()
5,热图怎么画;
主要通过学习example,掌握学习R包的学习方法;用?pheatmap调出;学会制作自己的数据与example格式一样;
a1=rnom(100), dim(a1)=c(5,20),a2=a1+2;
b=cbind(a1,a2)
pheatmap(cbind(a1,a2),cluster_cols=f)
b=as.data.frame(b),
names(b)=c(paste(a1,1:20,sep=''), paste(a2, 1:20, sep=''))
pheatmap(b, cluster_rows=F, cluster_cols=F);
as.data.frame(group=c(rep("a1",20),rep("a2",20)))
rownames(b)<-colnames(a);
scale(log2(expr+1))
# Create test matrix;# Draw heatmaps;# Show text within cells;# Fix cell sizes and save to file with correct size;# Generate annotations for rows and columns;# Display row and color annotations;
6,如何挑选差异最大的基因
用sort取最大值;取标准差最大的;用scale 进行标准化;定义函数,可以让功能复用;
通过热图可以发现离群数据,然后去除;
知识点总结:names(tail((sort(apply(dat, 1, sd))),1000)),t(转至)
7,ID 转换
match;和 % 的使用;熟悉org.Hs.eg.db 的使用;strsplit(“”,“[.]”)str_split(a$1,'[.]', simplify=T)[,1]; 连续使用class
以a所在的顺序排序d
8,基因表达量与生存分析
OncoLnc,下载数据;熟悉用survival,survminer;ggsave 保存;学习基础变量结构,基础函数操作;
重复以上信息画生存分析图
学习新的数据包
9,基因表达量与临床症状
cbioportal,http://www.cbioportal.org/下载基因集和临床分期的关系;命令colnames(a)<-c(id, stage, exp);然后用ggstatsplot包来作图;
9,表达矩阵的样本的相关性;
R包分类:数据包(比如airway);功能函数包,注释包(芯片转换);把矩阵取小,筛选地表达的基因;把数据整理成功能R包需要的行列格式;
基本函数:dim(), cor(exp[,1],exp[,2])(样本相关性) ;pheatmap::pheatmap(子命令调用方法);
R语言技巧:apply(x,1,function()),
x<-exp[1,],x>1[返回逻辑判断] ,
exp[apply(exp, 1, function(x), sum(x)>5), ] (通过逻辑变量取行)
log(edgeR::cpm(exp)+1) ,去除文库大小的差异;
10,芯片表达矩阵的下游分析;
分析主要包括:做好分组date.frame , 得到表达矩阵,根据limma包的说明书操作,(注意rownames(design)<-colnames(exp));
细碎知识点总结:boxplot 看一下总体的分布情况;
boxplot(exp[1,]~group_list);
11,RNA-seq表达矩阵的下游分析;
用表达矩阵和分组信息;
R 基础变量操作,S4 对象用@来取一个子集;
DESeq,和limma 包的分析不同,一个是处理RNAseq矩阵,一个处理芯片表达矩阵;DESeq 可以做dds矫正
小技巧:把数据做成之前的样子,这样子可以复用之前的代码
14,R学习资源介绍;
网上资源: R 语言的博客,统计学基础, 可视化基础,bioconductor 手册,
推荐书籍,R语言实践:导入数据,基础画图,基本数据管理,统计方法了解就好,
Rstudio与R 的区别:是一种R语言编辑器,保留代码记录,界面友好,好用;
15,R与excel区别;
2.1 用Rproject 打开R语言,read.table(,sep="\t"),读入数据;
2.2 五种变量类型:data.frame, 用b=a[1:4,1:4] 取子集;b[,1:2]; 矩阵:e=matrix(1:10,2),2行的矩阵;向量构架(数字型,逻辑型);
重点是数据框,数据框操作筛选功能,a[,1] =="WXS" , which(a[,1] =="WXS");f=a[which(a[,1] =="WXS"), ]
factor, character
16,简单统计及数字函数;
+-*/ 简单运算;
mean(a$bases) , 通过逻辑运算取子集,x[x[,1]=="WXS",] , t.test(a,b) ,
max(), fivenum(), 一个英文单词就是一个函数,比如sin ,cos等;
画图:boxplot 其他代码可以参考 ,plot 是画图, text 是给画布加字;
读入 read.csv(用table匹配文件)
17 基础语法;
正则表达式:grep("WXS",a[,1]), 取list 子集的方法,[[]] 取出一个向量,[] 取出一个子llist,
分列:strsplit,背下来:lapply() 的应用,lapply(strsplit(tmp,"," ),function(x){x[2]})
匹配与替换:sub("PE", ' ' ,tmp)对tmp 里边的“PE” 替换成“ ”
去重与排序:sort 与unique;
控制流 循环,重点理解,apply;
18 高级数据处理技巧;
18.1 apply 函数,主要对matrix 或者data.frame 进行处理;
apply(e, 2, mean),对e 矩阵进行 列取平均值;
还有sapply,tapply, mapply,
18.2 对字符串的操作,内置函数的处理strsplit(), paste(), nchar(), substr(), chartr() ,分别表示 字符串分割,粘贴,计数,字符串截取,字符串替换。灵活的字符串处理包:stringr(),vignette('stringr')
比较这三个函数
,
18.3 大部分新手的错误来自于因子,包括 创建因子,更改level,差异分析,case和control 问题,cut 和table 函数;
回顾安装R包,设置mirror,BiocInstaller::biocLite();
sCLLex 是一个对象,存储了很多数据框,直接在提示符后边输入对象名称即可查看;exps(sCLLex), 获取表达矩阵,
18.4 后期建议学习:vignette('stringr')
19 绘图该如何学;
boxplot(a$base~abase~ap.value
title() ,加图片名称,paste0("p value = ", p)
ggplot(), 或者 ggpubr(),
学会google 搜索 解决问题,比如搜索 ggpubr(), 添加p-value;
str() 查看object的结构;
学习素材:基本画图, ggplot, 绘画配对样本的图,下图aes() 为图加颜色映射;
plot(hclust(dist(t(e)))), 看远近关系;
20 R-7-作业;
20.1,作业知识点总结,
<<- 创建全局环境变量 ,NA,NULL,NaN(not a number),
status <- c("Poor", "Improved", "Excellent", "Poor"),
status <- factor(status, ordered=TRUE) ,创建有序因子
20.2,R 语言20题: install.packages() 存在CRAN上的包, devtools :devtools 提供了若干方便安装包的函数;BiocInstaller:This package is used to install and update Bioconductor, CRAN, and (some) github packages. 安装bioconductor上相关的包:BiocInstaller::biocLite("pakagesname") ,用install.package 会说不存在;
20.3 理解ExpressionSet
ExpressionSet ,ls("package:hg")
20.4 ls("package:hgu95av2.db")
20.5 生信人的R语言20题 可以参考这个代码继续学习