r - 为 R 中的读取计数矩阵生成行名称的问题
问题描述
我正在按照本教程在线分析细胞类型之间的 RNA-seq 数据。
https://combine-australia.github.io/RNAseq-R/06-rnaseq-day1.html
我已经能够使用我自己的数据执行其中的大部分操作,但我现在正在尝试执行通路富集分析。但是,我遇到了问题,因为我无法将初始读取计数矩阵的行标记为基因 ID。
我试图简单地使用基因 ID 创建一个新列,但是这会将矩阵更改为数据框并阻止我使用 DGEList。
seqdata 是我的 data.frame,其中包含来自分析的基因的所有信息,第 1 列作为基因 ID 名称,第 15 到 24 列作为向量,其中包含 10 个样本中每个基因的读取计数信息。
我从这个 data.frame 生成了一个名为 readcounts_g 的矩阵,它只有每个基因的读取计数,但我试图分配行名,在其中我从 seqdata 中获取第 1 列并使用此向量中的基因名称来分配readcounts_g 数据帧的行名。
rownames(readcounts_g) <- seqdata[,1]
Error in `.rowNamesDF<-`(x, value = value) : invalid 'row.names' length
In addition: Warning message:
Setting row names on a tibble is deprecated.
我也曾想过将基因名称作为附加向量简单地输入到 readcounts_g 中,但如果我这样做了,我就不能使用 DEGList,因为它需要一个矩阵。
最终,我尝试使用 goana 对差异表达的基因进行富集途径分析。但是,如果没有将基因名称分配给最终的 DEG 矩阵,我将无法做到这一点。
如果有人对我如何解决这个问题有见解,将不胜感激。如果需要,我可以尝试进一步解释。
解决方案
如果 seqdata 是 a tibble
,seqdata[,1]
是 tibble 类而不是character
or numeric
,因此您无法将其分配为矩阵的行名,请参见下面的替代方法:
library(dplyr)
seqdata = tibble(geneID=sample(1:1000),
s1=rpois(1000,10),s2=rpois(1000,15),
s3=rpois(1000,20),s4=rpois(1000,25))
readcounts_g = as.matrix(seqdata[,2:5])
rownames(readcounts_g) = seqdata[,1]
#throws error
rownames(readcounts_g) = seqdata$geneID
#ok
> head(readcounts_g)
s1 s2 s3 s4
763 16 13 13 24
776 13 19 24 26
308 12 19 19 34
88 10 8 13 22
23 10 13 16 25
509 9 12 14 28
推荐阅读
- android - Webview 未正确获取 URL
- mysql - 本地计算机上的 MySQL80 服务启动和停止。怎么解决?
- javascript - Laravel 使用 ajax 提交表单在 td 标签内不起作用
- reactjs - React HashRouter 无法从主页重定向到辅助页面
- react-native - react-native 链接无法工作,当我运行 react-native 链接时
- c++ - R/C 如何计算二项分布?
- javascript - TypeError:无法读取 null 的属性“流体”
- flutter - 无法居中对齐列小部件子项
- winapi - 通过 GetOpenFileName/GetSaveFileName 上的 Hook 更改 CDN_FILEOK 上的 lpstrFile 是否有效?
- javascript - ngRepeat:iexp 渲染数据时的无效表达式