生信人应该这样学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

;toTable;merge(a, b, by='enseble_id',all.x=T ); (d$ensemble)>1
这个函数得好好理解

以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~atype), t.text(a\base~atype)p.value
title() ,加图片名称,paste0("p value = ", p)
ggplot(), 或者 ggpubr(),
学会google 搜索 解决问题,比如搜索 ggpubr(), 添加p-value;
str() 查看object的结构;
学习素材:基本画图, ggplot, 绘画配对样本的图,下图aes() 为图加颜色映射;

ggplot2 采用图层的格式画图

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题 可以参考这个代码继续学习

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,270评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,489评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,630评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,906评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,928评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,718评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,442评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,345评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,802评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,984评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,117评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,810评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,462评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,011评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,139评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,377评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,060评论 2 355

推荐阅读更多精彩内容

  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,812评论 0 38
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,345评论 0 2
  • 我们会根据业务的要求做各种复杂的报表,包括了分组、排序、过滤、转置、差分、填充、移动、合并、分裂、分布、去重、找重...
    fhhhfssfhh阅读 1,470评论 0 6
  • 一,为什么要混淆 为了避免我们开发的应用被人反编译,看到应用的源代码,混淆之后,就会使用a,b,c,d这样简短而无...
    大前端圈阅读 790评论 0 3
  • 与情绪和谐相处四步骤 (觉察一内观一翻转一启程) 1、回放我在事件当中的是什么样的情绪? (悲伤、痛苦、无助、失望...
    喻琳琳阅读 197评论 0 0