生信学习——R语言练习题-初级(附详细答案解读)
题目目录
- 1. 打开 Rstudio 告诉我它的工作目录。
- 2. 新建6个向量,基于不同的数据类型。(重点是字符串,数值,逻辑值)
- 3. 告诉我在你打开的rstudio里面 getwd() 代码运行后返回的是什么?
- 4. 新建一些数据结构,比如矩阵,数组,数据框,列表等重点是数据框,矩阵)
- 5. 在你新建的数据框进行切片操作,比如首先取第1,3行, 然后取第4,6列
- 6. 使用data函数来加载R内置数据集,找到rivers的描述。
- 7. 下载 [https://www.ncbi.nlm.nih.gov/sra?term=SRP133642](https://www.ncbi.nlm.nih.gov/sra?term=SRP133642) 里面的 RunInfo Table 文件读入到R里面,了解这个数据框,多少列,每一列都是什么属性的元素。
- 8. 下载 [https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE111229](https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE111229) 里面的样本信息sample.csv读入到R里面,了解这个数据框,多少列,每一列都是什么属性的元素。
- 9. 把前面两个步骤的两个表(RunInfo Table 文件,样本信息sample.csv)关联起来,使用merge函数。
- 10. 对前面读取的RunInfo Table文件在R里面探索其MBases列。把前面读取的样本信息表格的样本名字根据下划线分割看第3列元素的统计情况。第三列代表该样本所在的plate。根据plate把关联到的RunInfo Table信息的MBases列分组检验是否有统计学显著的差异。分组绘制箱线图(boxplot),频数图(hist),以及密度图(density) 。
- 11. 使用ggplot2把上面的图进行重新绘制。
- 12. 使用ggpubr把上面的图进行重新绘制。
前面学习了Linux的基础操作和一些文件格式的shell练习,接下来开始学习R语言。R语言是生信学习的重要基石。我的学习路线是过一遍教学课程,然后用题目来加深自己的理解。
推荐几个优秀课程:
R语言入门与数据分析:https://www.bilibili.com/video/BV19x411X7C6
R语言与生物信息绘图:https://www.bilibili.com/video/BV1XJ411m73p
生信人应该这样学R语言:https://www.bilibili.com/video/BV1cs411j75B
建议搭配《R语言实战(第2版)》按顺序进行学习。最后一个可看可不看。
本文的题目来自Jimmy老师的R语言练习题:http://www.bio-info-trainee.com/3793.html
博主将题目进行了整理,并且对Jimmy老师的部分答案进行了适量修改。需要代码和文件的可以私信我。学就完事了…
1. 打开 Rstudio 告诉我它的工作目录。
getwd()# 返回工作目录:[1] "D:/R/R-project"
2. 新建6个向量,基于不同的数据类型。(重点是字符串,数值,逻辑值)
有两种最基本的数据类型:原子向量(atomic vector)和泛型向量(generic vector)。原子向量是包含单个数据类型的数组。 原子向量是包含单个数据类型(逻辑类型、实数、复数、字符串或原始类型)的数组。泛型向量也称为列表,是原子向量的集合。
a1 <- c(T, F, T, F)
class(a1) # 逻辑型a2 <- c(15, 18, 25, 14, 19)
class(a2) # 实数a3 <- c(1+2i, 0+1i, 39+3i, 12+2i)
class(a3) # 复数a4 <- c("Bob", "Ted", "Carol", "Alice")
class(a4) # 逻辑型a5 <- matrix(1:20,4,5)
class(a5) # 矩阵a6 <- list(1:20)
class(a6) # 列表
3. 告诉我在你打开的rstudio里面 getwd() 代码运行后返回的是什么?
getwd() # 返回工作目录:[1] "D:/R/R-project"
4. 新建一些数据结构,比如矩阵,数组,数据框,列表等重点是数据框,矩阵)
rnames <- c("R1", "R2", "R3", "R4", "R5")
cnames <- c("C1", "C2", "C3", "C4")
mymatrix <- matrix(1:20, 5, 4, byrow=T, dimnames=list(rnames, cnames))
mymatrixdim1 <- c("A1", "A2")
dim2 <- c("B1", "B2", "B3")
dim3 <- c("C1", "C2", "C3", "C4")
myarray <- array(1:24, c(2, 3, 4), dimnames=list(dim1, dim2, dim3))
myarraydnames <- c("ergou", "lisi", "zhangsan")
dages <- c(12, 23, 45)
dgender <- c("man", "Woman", "man")
dheight <- c(160, 170, 180)
dweight <- c(50, 55, 75)
dwage <- c(5000, 4000, 3000)
mydataframe <- data.frame(dages,dnames,dgender,dheight,dweight,dwage)
mydataframeg <- "My First List"
h <- c(25, 26, 18, 39)
j <- matrix(1:10, nrow=5)
k <- c("one", "two", "three")
mylist <- list(title=g, ages=h, j, k)
mylist
5. 在你新建的数据框进行切片操作,比如首先取第1,3行, 然后取第4,6列
data <- mydataframe[c(1,3), c(4,6)]
data# 输出结果dheight dwage
1 160 5000
3 180 3000
6. 使用data函数来加载R内置数据集,找到rivers的描述。
查看更多的R语言内置的数据集:https://mp.weixin.qq.com/s/dZPbCXccTzuj0KkOL7R31g
data()# Lengths of Major North American Rivers
rivers[1] 735 320 325 392 524 450 1459 135 465[10] 600 330 336 280 315 870 906 202 329[19] 290 1000 600 505 1450 840 1243 890 350[28] 407 286 280 525 720 390 250 327 230[37] 265 850 210 630 260 230 360 730 600[46] 306 390 420 291 710 340 217 281 352[55] 259 250 470 680 570 350 300 560 900[64] 625 332 2348 1171 3710 2315 2533 780 280[73] 410 460 260 255 431 350 760 618 338[82] 981 1306 500 696 605 250 411 1054 735[91] 233 435 490 310 460 383 375 1270 545
[100] 445 1885 380 300 380 377 425 276 210
[109] 800 420 350 360 538 1100 1205 314 237
[118] 610 360 540 1038 424 310 300 444 301
[127] 268 620 215 652 900 525 246 360 529
[136] 500 720 270 430 671 1770
7. 下载 https://www.ncbi.nlm.nih.gov/sra?term=SRP133642 里面的 RunInfo Table 文件读入到R里面,了解这个数据框,多少列,每一列都是什么属性的元素。
(参考B站生信小技巧获取runinfo table) 这是一个单细胞转录组项目的数据,共768个细胞,如果你找不到RunInfo Table 文件,可以点击下载,然后读入你的R里面也可以。
# 注意文件位置
SraRunTable <- read.table("practice/SraRunTable.txt", header = T, sep = "\t")View(SraRunTable)
str(SraRunTable)
8. 下载 https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE111229 里面的样本信息sample.csv读入到R里面,了解这个数据框,多少列,每一列都是什么属性的元素。
# read.csv和read.table都可以读取csv文件,但有一点区别。
sample <- read.csv("practice/sample.csv", header = T)
sample1 <- read.table("practice/sample.csv", header = T, sep = ",")
View(sample)
str(sample)
9. 把前面两个步骤的两个表(RunInfo Table 文件,样本信息sample.csv)关联起来,使用merge函数。
# merge函数需要根据相同列进行比较,然后合并。
view(SraRunTable)
view(sample)# 根据文件信息,可以发现Sample_Name和Accession这两列的数据相似
total <- merge(SraRunTable, sample, by.x = "Sample_Name", by.y = "Accession")
View(total)
合并之后的数据,有768行,42列。
10. 对前面读取的RunInfo Table文件在R里面探索其MBases列。把前面读取的样本信息表格的样本名字根据下划线分割看第3列元素的统计情况。第三列代表该样本所在的plate。根据plate把关联到的RunInfo Table信息的MBases列分组检验是否有统计学显著的差异。分组绘制箱线图(boxplot),频数图(hist),以及密度图(density) 。
newdata <- total[,c("MBases","Title")]# 思路:先把title取出来,在设置一个function函数对title的每一行进行分割,然后取第三个数值,最后将列表格式转换成字符串格式
plate <- unlist(lapply(newdata[,2],function(x){xstrsplit(x,'_')[[1]][3]}))# 查看plate的分类
table(plate)
# T检验
t.test(newdata[,1]~plate)
# 箱线图
boxplot(newdata[,1]~plate)
# 频数图
hist(total$MBases)
# 密度图
plot(density(total$MBases))
11. 使用ggplot2把上面的图进行重新绘制。
library(ggplot2)
newdata$Title <- plate
# 箱线图
ggplot(newdata,aes(x=plate,y=MBases))+geom_boxplot()
# 直方图
ggplot(newdata,aes(x=MBases))+geom_histogram()
# 密度图
ggplot(newdata,aes(x=MBases))+geom_density()
12. 使用ggpubr把上面的图进行重新绘制。
library(ggpubr)
ggboxplot(newdata, x = "Title", y = "MBases")
gghistogram(newdata, x = "MBases")
ggdensity(newdata, x = "MBases")
生信学习——R语言练习题-初级(附详细答案解读)相关推荐
- 生信学习——R语言学习总结
写在前面--经过了四十天断断续续的学习,算是对R语言有了初步的了解.其实使用R语言,无非就是对数据进行处理分析,然后把结果可视化.但是数据的千变万化,还有数以万计的函数.数据格式,使得这个过程变得很复 ...
- 生信学习——R语言小作业-中级(附详细答案解读)
题目目录 1. 请根据R包org.Hs.eg.db找到下面ensembl 基因ID 对应的基因名(symbol). 2. 根据R包hgu133a.db找到下面探针对应的基因名(symbol). 3. ...
- 生信学习——生信人的20个R语言习题(上)(附详细答案解读)
题目目录 1. 安装一些R包. 2. 了解ExpressionSet对象,比如CLL包里面就有data(sCLLex),找到它包含的元素,提取其表达矩阵(使用exprs函数),查看其大小. 3. 了解 ...
- 生信学习——基于R的可视化习题30个(附详细答案解读)
题目目录 一.基础绘图 1. 对RNAseq_expr的每一列绘制boxplot图 2. 对RNAseq_expr的每一列绘制density图 3. 对RNAseq_expr的每一列绘制条形图 4. ...
- 生信分析R语言助力作图----单基因批量相关性分析
单基因批量相关性分析 嘻嘻嘻~~~,晚上秒变生信分析小白,一个游走在生物学和计算机变成之间的小白,享受着里面的快乐和痛苦.不停的挣扎,不停的成长,多学习,多尝试,一定会有意想不到的收获.加油!!! 首 ...
- 【生信】R语言在RNA-seq中的应用
R语言在RNA-seq中的应用 文章目录 R语言在RNA-seq中的应用 生成工作流环境 读取和处理数据 由targets文件提供实验定义 对实验数据进行质量过滤和修剪 生成FASTQ质量报告 比对 ...
- 生信学习——生信人的20个R语言习题(下)(附详细答案解读)
题目目录 12. 理解统计学指标mean,median,max,min,sd,var,mad并计算出每个基因在所有样本的这些统计学指标,最后按照mad值排序,取top 50 mad值的基因,得到列表. ...
- 【生信】R语言进行id转换的方法(附可直接使用代码)
本文我都默认已经下载好了表达矩阵exp了哦 代码都是直接给出来了,需要修改的地方我进行了标记 一般只要修改一下都能直接用了 方法一:下载平台数据以得到对应信息 然后进入官网https://www.nc ...
- R plot图片背景设置为透明_学习健明老师发布的R语言练习题的学习笔记(一)...
学习者:骆栢维 题目来源:生信基石之R语言 初级10 个题目:http://www.bio-info-trainee.com/3793.html 备注:本文为笔者学习健明老师GitHub答案代码的学习 ...
最新文章
- 翻译的艺术 —— 无能为力的翻译,搞笑的音译
- 目标检测--Rich feature hierarchies for accurate object detection and semantic segmentation(CVPR 2014)
- jQuery实现获取选中复选框的值
- mysql 12安装教程下载_MySQL 8.0.12.0安装教程
- Leet Code题解 - 1559. Detect Cycles in 2D Grid 检测二维无向图中的环
- P1032-字串变换【bfs】
- ODP 使用 ArrayBind 时可能会遇到的巨坑 'System.IConvertible' 的解决方法
- [No0000143]Win10“卓越性能模式”
- 深入学习之mysql(二)表的操作
- 【转载】金山词霸”屏幕取词技术揭密(讨论稿)
- GeoMAN:多层Attention网络用于地理传感器的时序性预测
- 利用python构建马科维茨_Markowitz投资组合之Python模拟
- 【云计算】云计算六大优点简单说明
- Android绘制跟随路径移动的圆圈
- 用java画爱心图_用java输出一个心型图案
- github标准pull request提交流程
- Spring拦截器配置详解(如何定义一个拦截器)
- SE 的 ONNX 图
- 自然语言处理NLP星空智能对话机器人系列:深入理解Transformer自然语言处理 GLUE MRPC
- AndroidStudio界面跳转