R语言练习题-初级

原帖链接: 生信菜鸟团

R语言基础知识的一些检验,最好是对照几本R基础语法书籍来理解。

全部答案及视频在:https://github.com/jmzeng1314/R_bilibili

首先做完了周末班工作, 包括软件安装以及R包安装:http://www.bio-info-trainee.com/3727.html

打开 Rstudio 告诉我它的工作目录。

getwd()

新建6个向量,基于不同的原子类型。(重点是字符串,数值,逻辑值)

a <- c(1,2,3,4)
b <- c("hello","world","!")
d <- c(FALSE, TRUE, T, F) #注意大小写
e <- c(1+0i, 2+4i)                #complex
f <- c(1:4)              # integer; or f <- c(1L,2L,3L,4L)  
print(class(f))
g <- charToRaw("Hello");  # raw(?)
print(class(g)) 
> [1] "raw"

告诉我在你打开的rstudio里面 getwd() 代码运行后返回的是什么?

当前工作目录

新建一些数据结构,比如矩阵,数组,数据框,列表等。(重点是数据框,矩阵)

myvector <- c(1,2,3,4)  #包括数据向量、逻辑向量、字符串向量
myfactor <- c('green','green','yellow','red','red','red','green')
mymatrix <- matrix( c('a','a','b','c','b','a'), nrow = 2, ncol = 3, byrow = TRUE)
myarray <- array(c('green','yellow'),dim = c(3,3,2))
mydataframe <- data.frame(
   gender = c("Male", "Male","Female"), 
   height = c(152, 172, 165), 
   weight = c(81,93, 78),
   Age = c(42,38,26)
)
# list
a <- "My List"
b <- c(25, 26, 18, 39)
c <- matrix(1:10, nrow=5)
d <- c("one", "two", "three")
mylist <- list(title=a ,b,c,d)

在你新建的数据框进行切片操作,比如首先取第1,3行, 然后取第2,4列

mydf1 <- mydataframe[c(1,3),]
mydf2 <- mydf1[,c(2,4)]  
# method 2
mydf2 <- mydataframe[c(1,3),c(2,4)]

使用data函数来加载R内置数据集 rivers 并描述它。并且可以查看更多的R语言内置的数据集:https://mp.weixin.qq.com/s/dZPbCXccTzuj0KkOL7R31g

data("rivers")
class(rivers)
?rivers

下载 https://www.ncbi.nlm.nih.gov/sra?term=SRP133642 里面的 RunInfo Table 文件读入到R里面,了解这个数据框,多少列,每一列都是什么属性的元素(参考B站生信小技巧获取runinfo table 这是一个单细胞转录组项目的数据,共768个细胞)。如果你找不到RunInfo Table 文件,可以点击下载,然后读入你的R里面也可以。

a <- read.csv("sample.csv")
dim(a)
str(a)

下载 https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE111229 里面的样本信息sample.csv读入到R里面,了解这个数据框,多少列,每一列都是什么属性的元素。(参考 https://mp.weixin.qq.com/s/fbHMNXOdwiQX5BAlci8brA 获取样本信息sample.csv)如果你实在是找不到样本信息文件sample.csv,也可以点击下载

b <- read.table("SraRunTable.txt", header = T,sep = "\t")
dim(b)
str(b)

把前面两个步骤的两个表(RunInfo Table 文件,样本信息sample.csv)关联起来,使用merge函数。

Merged_ab <- merge(a, b, by.x = "Accession",by.y = "Sample_Name")

基于下午的统计可视化

对前面读取的 RunInfo Table 文件在R里面探索其MBases列,包括: 箱线图(boxplot)和五分位数(fivenum),还有频数图(hist),以及密度图(density) 。

fivenum(b$MBases)

par(mfrow=c(1,3)) #在一张图上显示
boxplot(MBases ~ MBytes, data = b)
plot(density(b$MBases))
hist(b$MBases)

显示结果:

> fivenum(b$MBases)
[1]  0  8 12 16 74
Rplot.png

把前面读取的样本信息表格的样本名字 根据下划线分割 看第3列元素的统计情况。第3列代表该样本所在的plate。

d <- Merged_ab[,c("MBases", "Title")]
save(d, file = "input.Rdata")

rm(list = ls())
options(stringsAsFactors = F)
load(file = "input.Rdata")

e <- lapply(d[,2], function(x){
  x
  strsplit(x,"_")[[1]][3]
})
plate <- unlist(e)

#method 2
plate=unlist(lapply(as.character(d[,2]),function(x){
  x
  strsplit(x,'_')[[1]][3]
  
}))
boxplot(d[,1]~plate)

d$plate <= plate

根据plate把关联到的 RunInfo Table 信息的MBases列分组检验是否有显著的统计学差异。

t.test(d[,1]~plate)$p.value

分组绘制箱线图(boxplot),频数图(hist),以及密度图(density) 。

# 分组画出boxplot
d1 <- d[d$plate == '0048',]
d2 <- d[d$plate == '0049',]

par(mfrow=c(1,2))
boxplot(d1$MBases~d1$plate)
boxplot(d2$MBases~d2$plate)

# 分组画出density
plot(density(d[d$plate == '0048',]$MBases))
plot(density(d[d$plate == '0049',]$MBases))

# 分组画出histogram
hist((d[d$plate == '0048',]$MBases))
hist((d[d$plate == '0049',]$MBases))
Boxplot-grouped.png

density plot.png

Histograms.png

使用ggplot2把上面的图进行重新绘制。

library(ggplot2)
colnames(d)
ggplot(d,aes(x=plate,y=MBases))+geom_boxplot()

ggplot(d,aes(x=MBases))+geom_density()

ggplot(d,aes(x=MBases))+geom_histogram(bins = 50)

使用ggpubr把上面的图进行重新绘制。

library(ggpubr)
p <- ggboxplot(d, x = "plate", y = "MBases",
               color = "plate", palette = "jco",
               add = "jitter")
# Add p-value
p + stat_compare_means(method = 't.test')

ggdensity(d, x = "MBases",
          color = "plate", palette = "jco", rug = T,
          add = "mean")  
#color 可以显示分组信息;rug是下面的栅栏效果;add是添加none,mean或者median线

gghistogram(d, x =  "MBases",
            color = "plate", palette = "jco",bins = 50,
            add = "mean")
ggpubr_boxplot.png

ggpubr_density.png

ggpubr_hist.png

References:
简书作者[Forest_Lee] 盘一盘 生信技能树R语言小作业(初级)

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

推荐阅读更多精彩内容