生信人应这样学R语言

生信人应这样学R语言-生信技能树视频

一、介绍R语言及Rstudio

1、R是用于统计分析绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具
2、Rtudio

image.png

1)Source:(左上角1区): 代码的撰写
2)Console:(左下角2区): 执行代码的地方,执行结果也会显示在这里。
3)Environment, History, Connections:(右上角3区):

  • Environment:是用来记录当前变量的数值,方便查看当前变量的状况。
  • History:是所有在 Console区内代码执行的历史记录 。
  • Connections:是用来方便连接外部数据库。

4)Files, Plots, Packages, Help, Viewer:(右下角4区):

  • Files:显示当前工作路径下的文件。
  • Plots:显示画好的图。
  • Packages:显示已经安装好了的包,打勾代表已经加载。
  • Help:查询函数如何使用。
  • Viewer:是用来显示本地网页文件。
    参考文章:https://www.jianshu.com/p/132919ca2ca9

二、R语言基础变量讲解

image.png
image.png

image.png

1、创建向量:
1)使用create创建向量 , c为create即g=c(1,10)
2)使用:创建向量即a=1:10
3)使用函数创建向量如B=LETTERS[1:10]a=seq(1,10)
附:字符串要加单引号,若字符串本身有单引号,则需要加双引号围住带有单引号的字符串

> g=c(1,10)      #使用create创建向量
> g
[1]  1 10
> str(g)        # 查看对象g的结构
 num [1:2] 1 10     
> a=seq(1,10)    #使用函数创建向量
> a
 [1]  1  2  3  4  5  6  7  8  9 10
> a=1:10   #使用:创建向量
> a
 [1]  1  2  3  4  5  6  7  8  9 10
> B=LETTERS[1:10]     #使用函数创建向量
> B
 [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J"
> c=("jack'jam")
> c
[1] "jack'jam"

2、使用dim加维度 :
dim(f)=c(2,5) #创建两行五列的维度
结果为:

image.png

赋值: f[1,2]='5' 将f的第一行第二列变成字符串5。此时f的类型变成字符型,画图一般要求为数值型,所以,进行该操作后无法画图。

> f[1,2]='5'
> str(f)
 chr [1:2, 1:5] "1" "2" "5" "4" "5" "6" "7" "8" "9" "10"
image.png

3、str(x) :查看对象x的结构。str是structure的缩写。

> str(a)
 int [1:2, 1:5] 1 2 3 4 5 6 7 8 9 10         # [1:2, 1:5] :表示两行五列
image.png

4、mode(x) :查看对象x的模式:空(NULL),数值(numeric),字符(character),逻辑(logical),复数(complex),列表(list),函数(function)。

> mode (a)
[1] "numeric"      #数值

5、class(x): 查看对象x的类型:除了mode里列出的几种类型外,还有整数(integer),矩阵(matrix),因子(factor),阵列(array),数据框(data frame),时间序列(ts) 等其他类型。mode主要用于区别数据存放的方式,而class是一种更细微的分类方式,比如矩阵,就是一种更“有序”的数据存放方式。此命令比mode常用。

> class(a)
[1] "matrix"          # 矩阵类型
  • 数据框(data frame)与矩阵(matrix)的区别:在R语言中,一个二维数据既可以用matrix来表示,也可以用data.frame来表示,data.frame里面允许不同类型的数据存在,可以使用str()函数查看具体信息,而matrix里的所有数据都是同一种类型。
    使用cbind(),rbind(),as.matirx(),matrix()生成的是matrix类型,而read.table()和data.frame()生成的是data.frame类型。
    值得注意的是,虽然可以给matrix 的不同列命名,但是$在matrix是不能使用的。​
> a=1:10
> dim(a)=c(2,5)   
> b=as.data.frame(a)
> b[1,2]='6'
> View(b)

左右对齐证明是存在不同类型的数据,即原本a的矩阵变成了b的数据框。
6、is系列函数(是否是)和as系列函数(转换)。
7、建立索引数据框

1) tmp=a[c(3,7,8),] :tmp为索引数据框,取a的3,7,8行(并不是第3,7,8行而是行的标题)所有列组成的数据框。

image.png

2)b=grep('RNA-Seq', a$Assay_Type) : b为索引数据框,取Assay_Type列中含有RNA-Seq的内容
结果(下标)为:
image.png

c=grepl('RNA-Seq', a$Assay_Type) :c为索引数据框,取Assay_Type列中含有RNA-Seq的内容并判断正误(有疑惑)
结果:
image.png


三、外部数据导入导出

基本操作:读,写,取。
read.table('tmp.txt', header=T):读取tmp.txt并取表头。(打完read.table,使用Tab键选择文件。)
comment.char='!' :去除带有!的内容。
write.csv(b,'afer.csv'):将b文件写入转成afer.csv文件。
d=read.csv(afer.csv): 读取afer.csv文件并赋值给d。
b=b[,-1]: 去除第一列内容。
seq='\t' : 指定制表符分割。
save(b, file='b_input.Rdata') : 将b文件转换成Rdata文件格式。


四、中级变量操作

掌握函数的规律,学会举一反三才是重点。

image.png

1、row.names=F : 去掉行名
sort(a$MBases,decreasing=T)[1] : 对a中的MBases这一列以降序排列并取第一个值(即求最大值)。
2、max(a$MBases): 求a中的MBases这一列的最大值。
3、求行平均值:
1)rowMeans(b)
2)for (i in 1:nrow(b)){print(mean(as.numeric(b[i,])))}
3)x=as.numeric(b[1,])appiy(b,1,function(x){mean(x)})
4、自定义函数并使用:
1)rowMax=function(x){apply(x,1,max)} #求行最大值
使用:rowMax(b)
2)jack = function(x){for(i in 1:nrow(b){x=as.numeric(b[i])y=x[1]+x[2]-x[3]+x[4]-x[5]+x[6] print(y)})}

5、apply(b,1,sd): 求每一行的方差
6、sort (apply(b,1,sd),decreasing=T)[1:50] 求最大方差(只取50个)
7、sample(1:nrow(b),50) : 从b的第一行到最后一行随机抽取50个数

五、热图(步骤:得到数据-->数据处理得到矩阵-->画图)

基本了解:
热图:表现一个数值矩阵,图上每一个小方格都是一个数值,按一条预设好的色彩变化尺(称为色键,Color Key),来给每个数值分配颜色,虽然看起来眼花,但道理却很简单。这幅图就是24个样本(列)中,30类基因(行)的表达情况。

image.png

https://www.sohu.com/a/225637183_170798
基因表达矩阵:基因表达数据通常利用矩阵形式表示,称为基因表达矩阵。基因表达矩阵的行代表一个基因在不同环境条件下或不同时间点的表达,列代表不同条件或样本下(如组织、实验条件、处理因素等)所有基因的表达情况,每个格子的数据表示特定的基因在特定的样本中的表达水平。

  • 数据来源
    去ncbi官网选择GEO DataSet,输入gse17215 搜索。选择第一个(完全匹配)进入,进入Series Matrix File下载.matrix.txt.gz文件。
image.png
image.png
  • 文本数据处理(如有不懂参考本文外部数据导入导出)
    将下载的文件放进R的工作目录。
    1)解压使用excel打开(截图未截完,下面与图上结尾相似为数据矩阵):
    image.png

    2)使用R读取:
> read.table('biodata/GSE93755-GPL17021_series_matrix.txt.gz')
Error in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  : 
  line 79 did not have 2 elements

去除带有!内容并取表头:
共7列放不下放在后面


image.png

与Excel比较正确:


image.png
> a=read.table('biodata/GSE17215_series_matrix.txt',comment.char = '!',header = T)
> write.csv(a,'a1.csv')
> View(a)
image.png

rownames(a)=a[,1] :将第一列设置为行名,同时行名与列重复,需删除。得结果:


a=a[,-1]: 删除第一列(即与行名重复的列,行名那列不是第一列)得结果矩阵:

image.png


  • 画图
> a = log2(a)
> pheatmap::pheatmap(a[1:10,])

结果为:


image.png

六、选取差异明显的基因的表达量矩阵绘制热图

  • library() #列出已安装的包。
  • R数据的保存与加载:
    可通过save()函数保存为.Rdata文件,通过load()函数将数据加载到R中。
> save(a,file='d://data//dumData.Rdata')
> load('d://data//dumData.Rdata')
  • apply函数是最常用的代替for循环的函数。apply函数可以对矩阵、数据框、数组(二维、多维),按行或列进行循环计算,对子元素进行迭代,并把子元素以参数传递的形式给自定义的FUN函数中,并以返回计算结果。

函数定义:
apply(X, MARGIN, FUN, ...)
参数列表:
X:数组、矩阵、数据框
MARGIN: 按行计算或按按列计算,1表示按行,2表示按列
FUN: 自定义的调用函数
…: 更多参数,可选
比如,对一个矩阵的每一行求和,下面就要用到apply做循环了。

> x<-matrix(1:12,ncol=3)
> apply(x,1,sum)
[1] 15 18 21 24
  • library() : 加载包
  • n=t(scale(t(dat[cg,]))):取数据dat行含有cg的内容为t,再对t进行z-score标准化,重新取为t,赋值给n。
    scale函数详解:https://www.cnblogs.com/guo-xiang/p/7810071.html
  • 将n将n>2变成2,<-2的变成-2,从而提高差异。
  • 自定义一个函数,将一堆代码放进去,从而实现一个函数画热图。

七、id转换

基本思路
1、去掉.分隔的后一部分(包含.):使用函数strsplit
2、三个表进行关联,整合信息。(依据两个表含有共同Id): 使用函数merge
3、出现重复,挑出重复部分:使用函数tableorder
4、去重,排序:使用函数duplicatedmatch


函数讲解

1、strsplit()是一个拆分函数,该函数可以使用正则表达式进行匹配拆分。
其命令形式为:strsplit(x, split, fixed= F, perl= F, useBytes= F)

  • 参数x为字符串格式向量,函数依次对向量的每个元素进行拆分(即拆分对象)
  • 参数split为拆分位置的字串向量,即在哪个字串处开始拆分;该参数默认是正则表达式匹配;若设置fixed= T则表示是用普通文本匹配或者正则表达式的精确匹配。用普通文本来匹配的运算速度要快些。
  • 参数perl的设置和perl的版本有关,表示可以使用perl语言里面的正则表达式。如果正则表达式过长,则可以考虑使用perl的正则来提高运算速度。
  • 参数useBytes表示是否逐字节进行匹配,默认为FALSE,表示是按字符匹配而不是按字节进行匹配。
    strsplit('ENSG000003.13','[.]')[[1]]:以ENSG000003.13为分割对象,以.号分割,取分割后的第一部分。

2、R中的merge函数类似于Excel中的Vlookup,可以实现对两个数据表进行匹配和拼接的功能。与Excel不同之处在于merge函数有4种匹配拼接模式,分别为inner,left,right和outer模式。 其中inner为默认的匹配模式,可与sql语言中的join语句用法。

merge(x, y, by = intersect(names(x), names(y))
by.x = by, by.y = by, all = FALSE, all.x = all, all.y = all,
      sort = TRUE, suffixes = c(".x",".y"),
      incomparables = NULL, ...)
  • x,y 要合并的两个数据集
  • by,用于连接两个数据集的列,intersect(a,b)值向量a,b的交集,names(x)指提取数据集x的列名 by = intersect(names(x), names(y)) 是获取数据集x,y的列名后,提取其公共列名,作为两个数据集的连接列, 当有多个公共列时,需用下标指出公共列,如names(x)[1],指定x数据集的第1列作为公共列
    也可以直接写为 by = '公共列名',前提是两个数据集中都有该列名,并且大小写完全一致,R语言区分大小写
  • by.x,by.y:指定依据哪些行合并数据框,默认值为相同列名的列
  • all,all.x,all.y:指定x和y的行是否应该全在输出文件
  • sort:by指定的列(即公共列)是否要排序
  • suffixes:指定除by外相同列名的后缀
  • incomparables:指定by中哪些单元不进行合并

b=merge(a, gis, by='ensembl_id', all.x=T): 合并a和gis数据框,以ensembl_id为共同列,并指定a内容全部保留。另一个命令同理,把b和gis合并数据。

3、函数table(求因子出现的频数):
使用格式为:
table(..., exclude = if (useNA == "no") c(NA, NaN), useNA = c("no", "ifany", "always"), dnn = list.names(...), deparse.level = 1)

  • ...:为要求频数的因子
  • 参数exclude表示哪些因子不计算。
    例子:table(table(d$ensembl_id)>1) 先在d中计算ensembl_id这一列出现的频数,再计算出频率大于1的ensembl_id的频数。结果:大于1的出现了151次,即ensembl_id有151个id出现重复。
    image.png

4、order:排序(默认升序,decreasing=T时为降序)

> d=1:10
> order(d)
 [1]  1  2  3  4  5  6  7  8  9 10
> order(d,decreasing = T)
 [1] 10  9  8  7  6  5  4  3  2  1

例子:d=d[order(d$v1),]:d根据d中的v1列排序,再赋值给d

5、duplicated函数是一个可以用来解决向量或者数据框重复值的函数,它会返回一个TRUE和FALSE的向量,以标注该索引所对应的值是否是前面数据所重复的值。(重复的值标记为TRUE,比如三个值一样,会被标记出一个FALSE和两个TRUE

例子:d=d[!duplicated(d$v1)] :先找出d中v1重复的部分标记为TRUE,再取反( ),TRUE变成FALSE,FALSE变成TRUE,TRUE就是去掉重复部分的正确值。
参考文章:http://blog.sina.com.cn/s/blog_bcc268080102wt3i.html

6、match函数:匹配函数,返回x对应值在table中是否存在,并从1开始编号。
用法:
match(x,table,nomatch,incomparables)
x是查询对象,table是待匹配的向量,nomatch是不匹配项的设置值(默认为NA值),incomparables设置table表中不参加匹配的数值,默认为NULL

例子:d=d[match(a\$v1, d$v1),]:把a中v1列的顺序匹配到d中v1列再将其赋值给d。


八、任意基因任意矩阵任意癌症表达量分组的生存分析

1、基本了解:

  • 癌症和肿瘤基因图谱(Cancer Genome Atlas,TCGA)计划,试图通过应用基因组分析技术,特别是采用大规模的基因组测序,将人类全部癌症(近期目标为50种包括亚型在内的肿瘤)的基因组变异图谱绘制出来,并进行系统分析,旨在找到所有致癌和抑癌基因的微小变异,了解癌细胞发生、发展的机制,在此基础上取得新的诊断和治疗方法,最后可以勾画出整个新型“预防癌症的策略”。

  • TCGA 使命:提高人们对癌症发病分子基础的科学认识及提高我们诊断、治疗和预防癌症的能力

  • TCGA 目标:完成一套完整的与所有癌症基因组改变相关的“图谱”。


2、基本思路:实现一个基因在TCGA数据库里的生存关系图

第一种办法:使用网页工具: OncoLnchttp://www.oncolnc.org/
第二种办法:使用R语言:由于需要数据,所以还是需要到网站下载:
1)得到数据框:去到OncoLnc,在搜索框输入ARHGAP18。提交进入,选择一个刚兴趣的进入,在两个框各输入50,提交得出图片,点击click here下载文件得到画图的数据框,并放到R的工作目录。

image.png

image.png

2、画图:

  • 将数据赋值给dat:
> dat=read.csv('biodata/BLCA_93663_50_50.csv',header = T,sep = ',', fill = T)
> View(dat)
image.png

install.packages('ggstatsplot')出现问题:


image.png

九、任意基因任意癌症表达量和临床性状关联

  • 某个基因在某个癌症的表达量:

第一种办法:使用网页工具
进入http://www.cbioportal.org/ 选择Ovary/Fallopian Tube (卵巢或输卵管)选择第一篇文章 在Enter Genes:第二个框输入人类基因ARHGAP18,提交。

image.png

得出结果:点击plot,根据你想知道的表达量,对左侧进行微调,得到最终结果。
image.png

附:得到数据(第二种办法):点击右上方图标,选择Data,下载得到plot.txt。
image.png

第二种办法:使用R语言
1)得到数据:见第一种办法。
2)将plot.txt放到R的工作目录。并执行以下代码:

rm(list = ls()) 
options(stringsAsFactors = F)
a=read.table('plot.txt',header = T,sep = '\t',fill = T)
colnames(a)=c('id','stage','gene','mut')
dat=a
library(ggstatsplot)
ggbetweenstats(data = dat,x=stage,y=gene)

得到结果:


image.png

image.png

十、表达矩阵的样本的相关性
整体思路:
1.学会比较相关性即得出相关系数。
2.学会删除低表达和不表达基因。

  • cor函数计算的是列与列间的相关系数,得到的举证C(i,j)是第i列与第j列相关系数。
  • rnorm(n, mean = 0, sd = 1)
    n 为产生随机值个数(长度),mean 是平均数, sd 是标准差 。
    使用该函数的时候后,一般要赋予它 3个值.
    rnorm() 函数会随机正态分布,然后随机抽样 或者取值 n 次,
    >rnorm(5,0,1) 以N(0,1)的正态分布,分别列出5个值。
    r 这列代表随机,可以替换成dnorm, pnorm, qnorm 作不同计算
    r = random = 随机, d= density = 密度, p= probability = 概率 , q =quantile = 分位
> a=rnorm(10)   # 产生随机10个数
> b=10*a+rnorm(10)
> cor(a,b)       # 求a,b的相关性
[1] 0.9950829

Bioconductor的包:数据包、功能函数包、注释包

> rm(list = ls())
> options(stringsAsFactors = F)
> library(airway)
载入需要的程辑包:SummarizedExperiment
载入需要的程辑包:GenomicRanges
载入需要的程辑包:stats4
载入需要的程辑包:BiocGenerics
载入需要的程辑包:parallel

载入程辑包:‘BiocGenerics’

The following objects are masked from ‘package:parallel’:

    clusterApply, clusterApplyLB, clusterCall, clusterEvalQ, clusterExport,
    clusterMap, parApply, parCapply, parLapply, parLapplyLB, parRapply,
    parSapply, parSapplyLB

The following objects are masked from ‘package:stats’:

    IQR, mad, sd, var, xtabs

The following objects are masked from ‘package:base’:

    anyDuplicated, append, as.data.frame, basename, cbind, colMeans,
    colnames, colSums, dirname, do.call, duplicated, eval, evalq, Filter,
    Find, get, grep, grepl, intersect, is.unsorted, lapply, lengths, Map,
    mapply, match, mget, order, paste, pmax, pmax.int, pmin, pmin.int,
    Position, rank, rbind, Reduce, rowMeans, rownames, rowSums, sapply,
    setdiff, sort, table, tapply, union, unique, unsplit, which, which.max,
    which.min

载入需要的程辑包:S4Vectors

载入程辑包:‘S4Vectors’

The following object is masked from ‘package:base’:

    expand.grid

载入需要的程辑包:IRanges

载入程辑包:‘IRanges’

The following object is masked from ‘package:grDevices’:

    windows

载入需要的程辑包:GenomeInfoDb
载入需要的程辑包:Biobase
Welcome to Bioconductor

    Vignettes contain introductory material; view with 'browseVignettes()'.
    To cite Bioconductor, see 'citation("Biobase")', and for packages
    'citation("pkgname")'.

载入需要的程辑包:DelayedArray
载入需要的程辑包:matrixStats

载入程辑包:‘matrixStats’

The following objects are masked from ‘package:Biobase’:

    anyMissing, rowMedians

载入需要的程辑包:BiocParallel

载入程辑包:‘DelayedArray’

The following objects are masked from ‘package:matrixStats’:

    colMaxs, colMins, colRanges, rowMaxs, rowMins, rowRanges

The following objects are masked from ‘package:base’:

    aperm, apply

Warning message:
程辑包‘matrixStats’是用R版本3.5.2 来建造的 
> data(airway)
> exprSet=assay(airway)
> colnames(exprSet)
[1] "SRR1039508" "SRR1039509" "SRR1039512" "SRR1039513" "SRR1039516" "SRR1039517"
[7] "SRR1039520" "SRR1039521"
> cor(exprSet[,1],exprSet[,2])      #求第一列基因和第二列基因的相关性
[1] 0.9632268

exprSet的内容:行为基因,列为样本


image.png
> cor(exprSet)   # 求表达矩阵样本的相关性
           SRR1039508 SRR1039509 SRR1039512 SRR1039513 SRR1039516 SRR1039517
SRR1039508  1.0000000  0.9632268  0.9431333  0.8978772  0.9476515  0.9014495
SRR1039509  0.9632268  1.0000000  0.9323701  0.9428196  0.9202060  0.9290967
SRR1039512  0.9431333  0.9323701  1.0000000  0.9592993  0.9291853  0.9203183
SRR1039513  0.8978772  0.9428196  0.9592993  1.0000000  0.8834640  0.9498761
SRR1039516  0.9476515  0.9202060  0.9291853  0.8834640  1.0000000  0.9313570
SRR1039517  0.9014495  0.9290967  0.9203183  0.9498761  0.9313570  1.0000000
SRR1039520  0.9603249  0.9398292  0.9827034  0.9413725  0.9298860  0.9030552
SRR1039521  0.9023008  0.9463991  0.9525262  0.9853059  0.8724714  0.9291902
           SRR1039520 SRR1039521
SRR1039508  0.9603249  0.9023008
SRR1039509  0.9398292  0.9463991
SRR1039512  0.9827034  0.9525262
SRR1039513  0.9413725  0.9853059
SRR1039516  0.9298860  0.8724714
SRR1039517  0.9030552  0.9291902
SRR1039520  1.0000000  0.9559571
SRR1039521  0.9559571  1.0000000

画图:pheatmap::pheatmap(cor(exprSet))得到结果:

附:
1、更新R:
install.packages("installr")
library(installr)
updateR()
2、如何安装R包:

if (!requireNamespace("BiocManager", quietly = TRUE)) 
install.packages("BiocManager") ##判断是否存在BiocManager包,不存在的话安装
options()$repos  ## 查看使用install.packages安装时的默认镜像
options()$BioC_mirror ##查看使用bioconductor的默认镜像
options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/") ##指定镜像,这个是中国科技大学镜像
options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/")) ##指定install.packages安装镜像,这个是清华镜像

  • 一个基因在8个样本中大于5个样本不表达,需要删除。

  • apply(A,Margin,FUN,...)——A为矩阵,Margin设定待处理的维数,为1是横排(行),为2是竖排(列)做运算,Fun是运算函数


    image.png
tabie(x>1) #统计x>1的频数
sum(x>1)>5   # 将x>1的频次相加,并筛选出大于5的基因
x=exprSet[2,]   #x赋值为exprSet的第二行
apply(exprSet,1,function(x)sum(x>1)>5) 对exprSet矩阵中的行进行自定义函数的处理即判断每一行的和是否大于5。
exprSet=exprSet[apply(exprSet,1,function(x)sum(x>1)>5), ] #筛选出表达量合格的基因

附:小技巧:Ctrl+L : 清空console的内容

group_list=colData(airway)[,3]     #colData 待理解
tmp=data.frame(g=group_list) #将group_list转变成数据框并赋值给tmp
M=cor(log2(exprSet+1))

十一、芯片表达矩阵下游分析:
boxplot 用于绘制箱线图

十二、RNA-seq 表达矩阵差异分析

rm(list = ls()) 
options(stringsAsFactors = F)
library(airway)
data("airway")
exprSet=assay(airway)
colnames(exprSet)
group_list=colData(airway)[,3]

exprSet=exprSet[apply(exprSet, 1,function(x)sum(x>1)>5),]
table(group_list)
> table(group_list)
group_list
  trt untrt 
    4     4 
exprSet[1:4,1:4]
> exprSet[1:4,1:4]
                SRR1039508 SRR1039509 SRR1039512 SRR1039513
ENSG00000000003        679        448        873        408
ENSG00000000419        467        515        621        365
ENSG00000000457        260        211        263        164
ENSG00000000460         60         55         40         35
dev.off()
boxplot(exprSet)

附:

> data("airway")
Warning message:
In data("airway") : 没有‘airway’这个数据集
> source("http://bioconductor.org/biocLite.R")
Installing package into ‘C:/Users/300S/Documents/R/win-library/3.5’
(as ‘lib’ is unspecified)
trying URL 'https://bioconductor.org/packages/3.7/bioc/bin/windows/contrib/3.5/BiocInstaller_1.30.0.zip'
Content type 'application/zip' length 102191 bytes (99 KB)
downloaded 99 KB

package ‘BiocInstaller’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
    C:\Users\300S\AppData\Local\Temp\RtmpERLX1m\downloaded_packages
Bioconductor version 3.7 (BiocInstaller 1.30.0), ?biocLite for help
A newer version of Bioconductor is available for this version of R, ?BiocUpgrade for
  help
> options(BioC_mirror="http://mirrors.ustc.edu.cn/bioc/") 
> BiocInstaller::biocLite('airway')
BioC_mirror: http://mirrors.ustc.edu.cn/bioc/
Using Bioconductor 3.7 (BiocInstaller 1.30.0), R 3.5.2 (2018-12-20).
Installing package(s) ‘airway’
installing the source package ‘airway’

trying URL 'http://mirrors.ustc.edu.cn/bioc//packages/3.7/data/experiment/src/contrib/airway_0.114.0.tar.gz'
Content type 'application/gzip' length 11756544 bytes (11.2 MB)
downloaded 11.2 MB

* installing *source* package 'airway' ...
** data
** inst
** help
*** installing help indices
  converting help for package 'airway'
    finding HTML links ... 好了
    airway                                  html  
** building package indices
** installing vignettes
** testing if installed package can be loaded
*** arch - i386
*** arch - x64
* DONE (airway)
In R CMD INSTALL

The downloaded source packages are in
    ‘C:\Users\300S\AppData\Local\Temp\RtmpERLX1m\downloaded_packages’
> library(airway)
载入需要的程辑包:SummarizedExperiment
载入需要的程辑包:GenomicRanges
载入需要的程辑包:stats4
载入需要的程辑包:BiocGenerics
载入需要的程辑包:parallel

载入程辑包:‘BiocGenerics’

The following objects are masked from ‘package:parallel’:

    clusterApply, clusterApplyLB, clusterCall, clusterEvalQ, clusterExport,
    clusterMap, parApply, parCapply, parLapply, parLapplyLB, parRapply,
    parSapply, parSapplyLB

The following objects are masked from ‘package:stats’:

    IQR, mad, sd, var, xtabs

The following objects are masked from ‘package:base’:

    anyDuplicated, append, as.data.frame, basename, cbind, colMeans,
    colnames, colSums, dirname, do.call, duplicated, eval, evalq, Filter,
    Find, get, grep, grepl, intersect, is.unsorted, lapply, lengths, Map,
    mapply, match, mget, order, paste, pmax, pmax.int, pmin, pmin.int,
    Position, rank, rbind, Reduce, rowMeans, rownames, rowSums, sapply,
    setdiff, sort, table, tapply, union, unique, unsplit, which, which.max,
    which.min

载入需要的程辑包:S4Vectors

载入程辑包:‘S4Vectors’

The following object is masked from ‘package:base’:

    expand.grid

载入需要的程辑包:IRanges

载入程辑包:‘IRanges’

The following object is masked from ‘package:grDevices’:

    windows

载入需要的程辑包:GenomeInfoDb
载入需要的程辑包:Biobase
Welcome to Bioconductor

    Vignettes contain introductory material; view with 'browseVignettes()'.
    To cite Bioconductor, see 'citation("Biobase")', and for packages
    'citation("pkgname")'.

载入需要的程辑包:DelayedArray
载入需要的程辑包:matrixStats

载入程辑包:‘matrixStats’

The following objects are masked from ‘package:Biobase’:

    anyMissing, rowMedians

载入需要的程辑包:BiocParallel

载入程辑包:‘DelayedArray’

The following objects are masked from ‘package:matrixStats’:

    colMaxs, colMins, colRanges, rowMaxs, rowMins, rowRanges

The following objects are masked from ‘package:base’:

    aperm, apply

> data("airway")
> exprSet=assay(airway)
> colnames(exprSet)
[1] "SRR1039508" "SRR1039509" "SRR1039512" "SRR1039513" "SRR1039516" "SRR1039517"
[7] "SRR1039520" "SRR1039521"
> group_list=colData(airway)[,3]
> 
> exprSet=exprSet[apply(exprSet, 1,function(x)sum(x>1)>5),]
> boxplot(exprSet)
image.png

第二部分

一、学习资源介绍:


二、R与Excel的区别:
功能有些相同,只是Excel是通过可视化的操作来实现,而R语言则是通过代码和函数来实现。

三、简单统计及数学函数
mean()


友情阅读推荐:

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

推荐阅读更多精彩内容

  • 工欲善其事,必先利其器。总结一下,方便多了。R语言还是很牛逼的,可以干很多事情。有一把顺手的刀还是很重要的。 0....
    Liam_ml阅读 4,516评论 1 59
  • 01. 介绍r语言及rstudio编辑器 安装r及rstudio打开rstudio编辑器:4块1.新建脚本,mar...
    dandanwu90阅读 3,072评论 0 5
  • 积跬步,至千里 1.介绍R语言及RStudio 1.1 安装R 包和Rstudio1.2Rstudio四个区块,区...
    悦时光_阅读 9,425评论 5 53
  • 在我所遇到的那些可以称得上是高情商的人当中,他们有的可能并不是很会讲话,有的甚至算得上沉默寡言,但他们的最大特点是...
    但行耕耘莫问收获阅读 350评论 0 0
  • 一本正经普通话 再听马普好惊讶 声音反差如此大 是否此生就是她
    缘渡阅读 132评论 2 1