Same Symbol | 哇咔咔!!!盘点一下表达矩阵中重复基因的处理方法!~

1写在前面

医院天天叫我们填问卷,我真是不能理解。🫠

动不动就问我们对医院的福利满意吗,对自己的收入满意吗,觉不觉得工作负荷太重了???🙂

我们满不满意,觉不觉得累,医院心里没点数吗!?~~~🤒

不能再说了,再说我的号就要被河蟹掉了。🥸

今天的教程是相对比较基础的了,分享一下我处理Expression matrix时经常遇到的一个小问题,就是重复基因名或者探针名的问题。🤪

这个问题的处理起来也简单也复杂,你可以随机取一个,可以都去掉,可以取最大值,可以取均值,仁者见仁,智者见智吧。🧐

接着是今天的正文,盘点一下我个人常用的几种处理重复基因的方法!~🥳

2用到的包

rm(list = ls())
library(tidyverse)
library(limma)
library(IOBR)

3示例数据

今天是随机生成的数据,20个样本,30个基因。🙃

set.seed(123456)

exprSet <- matrix(runif(600, 1, 10), ncol= 20)

colnames(exprSet) <- paste0("Sample",1:20)

genes <- paste0("Gene", sample(LETTERS, 30, replace=T))

exprSet <- data.frame(genes,exprSet)

DT::datatable(exprSet)
alt

看一下有几个重复的基因吧,10个。😘

table(duplicated(exprSet$genes))
alt

4方法一(取高值)

这里需要注意一下哦,对于相同的基因,应该挑选行平均值大的一整行,而不应该打乱。🥳

index <- order(rowMeans(exprSet[,-1]),decreasing = T)

exprSet_ordered <- exprSet[index,]

keep <- !duplicated(exprSet_ordered$genes)

exprSet_max <- exprSet_ordered[keep,]

DT::datatable(exprSet_max)
alt

再看一下重复的基因去掉了没有,好的,任务完成。😙

table(duplicated(exprSet_max$genes))
alt

5方法二(取均值)

5.1 aggregate函数法

exprSet_mean <- aggregate(.~genes, mean, data = exprSet)

DT::datatable(exprSet_mean)
alt

table(duplicated(exprSet_mean$genes))
alt

5.2 avereps函数法

exprSet_avereps <-  avereps(exprSet,ID = exprSet$genes) %>% 
as.data.frame()

DT::datatable(exprSet_avereps)
alt

table(duplicated(exprSet_avereps$genes))
alt

6方法三(IOBR包)

最后介绍一下IOBR包的remove_duplicate_genes()函数,非常好用!~🤓

虽然这里method写的是mean,但实际上是挑选了平均值最大的一行,我个人也是比较喜欢这种方法。🤨

exprSet_IOBR_mean <- remove_duplicate_genes(exprSet, column_of_symbol = "genes", method = "mean")

DT::datatable(exprSet_IOBR_mean)
alt

table(duplicated(rownames(exprSet_IOBR_mean)))
alt

alt
最后祝大家早日不卷!~

点个在看吧各位~ ✐.ɴɪᴄᴇ ᴅᴀʏ 〰

📍 往期精彩

📍 🤣 chatPDF | 别再自己读文献了!让chatGPT来帮你读吧!~
📍 🤩 WGCNA | 值得你深入学习的生信分析方法!~
📍 🤩 ComplexHeatmap | 颜狗写的高颜值热图代码!
📍 🤥 ComplexHeatmap | 你的热图注释还挤在一起看不清吗!?
📍 🤨 Google | 谷歌翻译崩了我们怎么办!?(附完美解决方案)
📍 🤩 scRNA-seq | 吐血整理的单细胞入门教程
📍 🤣 NetworkD3 | 让我们一起画个动态的桑基图吧~
📍 🤩 RColorBrewer | 再多的配色也能轻松搞定!~
📍 🧐 rms | 批量完成你的线性回归
📍 🤩 CMplot | 完美复刻Nature上的曼哈顿图
📍 🤠 Network | 高颜值动态网络可视化工具
📍 🤗 boxjitter | 完美复刻Nature上的高颜值统计图
📍 🤫 linkET | 完美解决ggcor安装失败方案(附教程)
📍 ......

本文由 mdnice 多平台发布

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 这句话的意思是“bean已经使用相同的称定义过了!”。在Java编程,bean是指Java对象,而在一个程序,如果使用相同的称定义了两个或多个bean,就会出现这个错误。这通常是由于代码重复定义或错误的命所导致的。为了解决这个问题,需要检查代码的所有bean定义,并确保它们都有唯一的称。 ### 回答2: bean already defined with the same name!是一个常见的Java错误信息,通常表示在应用程序同时存在多个具有相同称的Java Bean。Java Bean主要指在Java创建的可重用的、可序列化的、基于模型的POJO类。Java Bean通常用于在应用程序传递和管理数据,对于大型复杂的应用程序来说非常重要。 在Java应用程序出现bean already defined with the same name!的错误通常是由于在一个Java文件或多个Java文件定义了多个Bean,并尝试将它们注册到同一个容器。这样做会导致容器无法区分哪个Bean应该被实例化,从而抛出这个错误信息。 要解决这个错误,可以先检查Java程序是否有多个Bean类定义了相同的称,如果有的话,将它们重命。另外,还可以通过检查应用程序的配置文件和部署描述符来查看是否存在重复的Bean定义。如果找到了这些重复定义的Bean,同样需要进行重命处理,以确保它们的称不会冲突。 总之,解决bean already defined with the same name!的错误,需要仔细检查应用程序的所有Bean定义,并确保它们的称是唯一的,不会发生冲突。只有这样,我们才能保证Java应用程序的正常运行。 ### 回答3: “bean already defined with the same name!”的意思是“该字的bean已经被定义过了!”。这通常是指在一个Java程序,出现了重复定义的bean对象。一个bean对象是一个被Java程序特别设计的用于从数据库、文件或其他数据源获取数据的对象。当定义一个bean时,需要为它设置一个唯一的称,以便在程序引用它。 当一个bean对象被定义时,它会被存储在一个JavaBean容器。如果在程序存在两个或更多bean对象拥有相同的称,那么JavaBean容器就不知道该引用哪一个对象了,于是就会抛出“bean already defined with the same name”这样的错误消息。 要解决这个问题,最简单的方法就是确保所有的bean对象都有唯一的称。这可以通过修改bean的称来实现。如果有多个bean对象的称相同,那么我们可以通过修改某一个bean的称,来区分这些对象。另外,我们也可以删除冲突的bean对象,这样就能够避免称冲突的问题了。 此外,我们也可以尝试使用不同的JavaBean容器来解决该问题。通过将bean对象分别存储在不同的容器,我们就能够避免同bean对象的冲突了。 总的来说,“bean already defined with the same name”是一个提醒我们bean对象称冲突的错误信息。我们需要小心设置bean对象的称,并确保每个bean对象都有唯一的称,以避免这个问题的出现。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值