果子老师课程学习总结GZ07R语言批量处理 part two

  前情提要:希望一天一个part

part two是part one的实战部分

目录

1.Hallmarkers名称转换

 代码一

这里有一个点:paste0函数 的 collapse参数

果子代码

unlist函数和simplify参数

2.查看富集分析的基因重复情况

tips:要关注基因的情况

果子代码

总结:


1.Hallmarkers名称转换

目的:把hallmarker的term变得可读(变短)

 代码一

library(tidyverse)
load(file = "data/hallmarks_gene_set.Rdata")
hallmarks$term
term <- str_split(hallmarks$term,"_",simplify = T)[,-1]

term = Hmisc::capitalize(tolower(term))

for (i in 1:dim(term)[1]) {
  print(i)
  hallmarks$new_term[i] <- paste0(term[i,],collapse = " ")
  
}
table(hallmarks$new_term)

这里有一个点:paste0函数 的 collapse参数

paste0(term[1,],collapse = "_")
[1] "Tnfa_Signaling_Via_Nfkb"
paste0(term[1,],"_")
[1] "Tnfa_"      "Signaling_" "Via_"       "Nfkb_"     

实际上如果不输入collapse,那么省略的默认参数是sep=

paste0(term[1,],sep = "_")
[1] "Tnfa_"      "Signaling_" "Via_"       "Nfkb_"     

默认的情况下,paste的sep是空格,而paste0则取消了空格;也是两个函数的重要区别

> paste0(term[1,],"test")
[1] "Tnfatest"      "Signalingtest" "Viatest"       "Nfkbtest"     
> paste(term[1,],"test")
[1] "Tnfa test"      "Signaling test" "Via test"       "Nfkb test" 

那么体会一下sep和collapse的区别,参考文章认真聊一聊R语言中的paste/paste0函数 - 简书

一个是叠加 一个是 压缩

paste0(term[1,],collapse ="test")
[1] "TnfatestSignalingtestViatestNfkb"
> paste0(term[1,],sep = "test")
[1] "Tnfatest"      "Signalingtest" "Viatest"       "Nfkbtest"     

个人更倾向于使用paste0,总体更好用

此外要注意结果里其实有许多空格,目前的处理只是方便阅读,但如果要引用的话,还是要注意字符串包含的内容

再关注一下大小写的转换:

term = Hmisc::capitalize(tolower(term))

还可以用于人鼠基因的转变

果子代码

### 第三个例子: 批量名称转换
rm(list = ls())
load(file = "data/hallmarks_gene_set.Rdata")

### 1.首先确定框架,我们想重复的操作是什么?
### 2.单次操作应该如何做
### 3.如何用R语言实现单次的需求

term = as.character(hallmarks$term[1])
### 1.裂解
term = unlist(strsplit(term, split="_", fixed=T))[-1]
### 2.大写变小写,然后再首字母大写
term = Hmisc::capitalize(tolower(term))
### 3.空格连接
term = paste(term, collapse=" ")
term

### 容器已经存在,直接批量循环输出
hallmarks$term <- as.character(hallmarks$term)
for(i in 1:nrow(hallmarks)){
  print(i)
  term = hallmarks$term[i]
  ### 1.裂解
  term = unlist(strsplit(term, split="_", fixed=T))[-1]
  ### 2.大写变小写,然后再首字母大写
  term = Hmisc::capitalize(tolower(term))
  ### 3.空格连接
  term = paste(term, collapse=" ")
  ### 4.数据导出
  hallmarks$term[i] = term
}
table(hallmarks$term)

避免了空格现象的发生

unlist函数和simplify参数

关键在于他的代码是一行一行操作,unlist可以直接变list为字符串,而仅仅使用simplify参数,返回一个矩阵,矩阵就必然有""存在,在连接时就会连上空格。还是老师的代码简洁明了。

2.查看富集分析的基因重复情况

tips:要关注基因的情况

富集分析里面会出来很多通路,在关注通路的同时,也可以看到一些看起来异常的通路为什么会在这里出现富集----因为有特殊的基因

果子代码

### 第四个例子: 
### 统计这些基因在显著富集通路中的次数
##############################################################
rm(list = ls())
load(file = "data/symbolKEGG.Rdata")
library(clusterProfiler)
dotplot(symboldata)
barplot(symboldata)

### 转换为数据框
symboldata  <- as.data.frame(symboldata )

### 1.首先确定框架,我们想重复的操作是什么?
### 2.单次操作应该如何做
### 3.如何用R语言实现单次的需求


### 修改其中一个
test = symboldata$geneID[1]
test
### 需要裂解
unlist(strsplit(test,split = "/"))


### 1.创建容器,此处是向量
splitvector <- c()
### 2.循环操作导出到容器
for(i in 1:length(symboldata$geneID)){
  print(i)
  new = unlist(strsplit(symboldata$geneID[i],split = "/"))
  splitvector = c(splitvector,new)
}

### 统计频次
table(splitvector)
### 排序
sortdata = sort(table(splitvector),decreasing = T)
### 成数据框来查看
test <- as.data.frame(sortdata)


总结:

tale不仅可以统计频次,还可以排序!

在循环中用c()使得向量不断延长

如需测试数据,请发邮件至yunbk@mail2.sysu.edu.cn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

18kkk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值