前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在R语言里面,把一个矩阵除以向量会发生什么

在R语言里面,把一个矩阵除以向量会发生什么

作者头像
生信技能树
发布2019-08-13 15:08:23
3.3K0
发布2019-08-13 15:08:23
举报
文章被收录于专栏:生信技能树

在做表达矩阵的counts值作为RPKM的时候发现的这个知识点细节问题, 因为矩阵需要每一个样本除以它各自的文库大小,然后呢,每个基因又需要除以各自的基因长度。

所以呢,我们的表达矩阵,其实是需要除以两个长度不一的向量,而且方向不一样,一个是按照行来除以,一个是按照列来除以,我最后写的代码是:

代码语言:javascript
复制
rpkm <- function(counts, lengths) {
  # 首先对矩阵进行基因长度归一化
  # 矩阵除以向量是按照行分开,表达矩阵的行是基因,所以每个基因除以各自的基因长度
  rate <- counts / lengths
  # 然后对矩阵进行文库大小归一化
  t(t(rate) / colSums(counts) )* 1e9
}

对很多朋友来说,是需要解释一下的。

很明显 counts 是表达矩阵,lengths 是不同基因长度向量,而 colSums(counts) 是不同样本的长度向量。

一个简单的例子

这里还是生成随机数:

代码语言:javascript
复制
counts=1:10
dim(counts)=c(2,5)
lengths=c(1:2)
lib=1:5
counts/lengths
counts/lib 
t(t(counts)/lib)

结果如下:

可以看到,矩阵除以向量,是按行的顺序来的,如果需要列,就得先转置,再转回来。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一个简单的例子
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档