0

我正在按照本教程在线分析细胞类型之间的 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 矩阵,我将无法做到这一点。

如果有人对我如何解决这个问题有见解,将不胜感激。如果需要,我可以尝试进一步解释。

4

1 回答 1

0

如果 seqdata 是 a tibble,seqdata[,1]是 tibble 类而不是characteror 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
于 2020-01-03T04:29:16.353 回答