2021-03-13 # 终极练习题:优秀学员选拔行动

1.使用循环,对iris的1到4列分别画点图(plot)

library(ggplot2)
par(mfrow = c(2,2))#par(no.readonly = TRUE)
iris
iris[,1:4]
for(i in 1:4){
  plot(iris[,i],col = iris[,5])
}
image.png
for(i in 1:4){
  plot(iris[,i]) #对比一下,分组颜色不同了
}
image.png

par()学习网址:
https://zhuanlan.zhihu.com/p/21394945
https://www.jianshu.com/p/5d44a08f67a5
我学习的par()函数的第一个函数是:
mfcol, mfrow: 调整图形输出设备中子图排列的向量, c(nrow, ncol), mfcol 让子图按照列优先排列, 相应的, mfrow 让子图按照行优先排列. 当设置 mfcol mfrow 后, cex 和 mex 的基本单位都相应减小.

2.生成一个随机数(rnorm)组成的10行6列的矩阵,列名为sample1,sample2….sample6,行名为gene1,gene2…gene10,分组为sample1、2、3属于A组,sample4、5、6属于B组。用循环对每个基因画ggplot2箱线图,并尝试拼图。

library(ggplot2)
exp = matrix(rnorm(60),nrow = 10)
colnames(exp) <- paste0("sample",1:6)
rownames(exp) <- paste0("gene",1:10)
exp[1:4,1:4]

另一种方法矩阵合并向量! dat = cbind(t(exp),group = rep(c("A","B"),each = 3))

以下为dplyr包中mutate函数新增列!

dat = data.frame(t(exp))
library(ggplot2)
library(dplyr)
dat = mutate(dat,group = rep(c("A","B"),each = 3))
dat
p = list()
for(i in 1:(ncol(dat)-1)){
  p[[i]] = ggplot(data = dat,aes_string(x = "group",y=colnames(dat)[i]))+
    geom_boxplot(aes(color = group))+
    geom_jitter(aes(color = group))+
    theme_bw()
}#老师还增加了抖动点和主题
library(patchwork)
wrap_plots(p,nrow = 2,guides = "collect")

#patchwork也可以直接输出列表图像,更简洁,速度更快,perfect

# 分面也行的。
exp = matrix(rnorm(60),nrow = 10)
colnames(exp) <- paste0("sample",1:6)
rownames(exp) <- paste0("gene",1:10)
exp[1:4,1:4]
dat = data.frame(t(exp))
dat = mutate(dat,group = rep(c("A","B"),each = 3))
library(tidyr)#利用tidyr包的gather函数,将dat转换成以gene和group中元素对应的值为expression的3列数据框。
dat2 = gather(dat,key = "gene",value = "expression",-group)
ggplot(data = dat2)+
  geom_boxplot(aes(x = group,y = expression,color = group))+
  theme_bw()+
  facet_wrap(~gene,nrow = 2) #以gene列为标准分面!!
# 3. 模拟出几个类似的文件,用R实现批量重命名
f = c("a .txt","b .txt","c .txt")
for(i in 1:3){
  file.create(f[[i]]) 
}
#直接命名之后file.create,向量取子集[]用一个应该就可以
library(stringr)
f2 = str_remove(f," ")# stringr包的函数,去除连接方式,这里去除了f种abc与.txt之间的空格。
for(i in 1:3){
  file.rename(f[[i]],f2[[i]]) 
  
  
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容