行名错误

问题描述 投票:0回答:1

我发现了一个完全相同的问题,没有任何有用的答案,因为作者没有提供他们的文件。我正在按照手册3.2 Starting from count matrices使用DESeq2库。我有从CSV文件导入的countdata和coldata。我了解countdata文件在这里可能是个问题,但我不完全了解问题所在。

我的代码:

library(DESeq2)

NGS <- read.csv2(paste0(datadir,"/CLN3_NGS_orig.csv"), header = T,stringsAsFactors = F)
Sinfo <- read.csv2(paste0(datadir,"/Sampleinfo.csv"), header = T,stringsAsFactors = F)
head(NGS)
head(Sinfo)

coldata <- DataFrame(Sinfo)
coldata <- lapply(coldata, as.factor)
coldata

lapply(NGSnum, class)
NGSnum <- data.frame(NGS[1], apply(NGS[2:13],2, as.numeric))
NGSFull <- DESeqDataSetFromMatrix(
countData = NGSnum,
colData = coldata,
design = ~ Genotype + Treatment)
NGSFull

NGS$Genotype <- relevel(NGSFull$Genotype, "WT")

deseqNGS <- DESeq(NGS)
res <- results(deseqNGS)
res

应用DESeqDataSetFromMatrix后的我的错误:

Error in `rownames<-`(`*tmp*`, value = colnames(countData)) : 
  attempt to set 'rownames' on an object with no dimensions

My coldata and countdata files in the cloud

顺便说一下,我的计数数据包含转录本,有时几个转录本(ENST)对应于单个基因(ENSG)。 DESeq2可以帮我整理一下,只给我输出基因吗?将转录本转换成基因很容易,但要在多个位置中定位一个位置就比较困难。

谢谢你,Kasia

r bioconductor
1个回答
0
投票

作为一般规则,生物导体问题将在生物导体支持站点link here上得到更多(相关)关注。但是,我可以尝试给出一些指示。您收到的错误是因为Coldata是列表而不是DataFrame对象。

coldata <- lapply(coldata, as.factor)

为每列创建一个列表。我在下面的代码中还解决了其他一些问题。最重要的是,NGSnum必须是一个整数矩阵。许多RNAseq计数矩阵实际上是浮点(或R中的两倍),但这是由于算法为可能来自多个基因的读取分配了概率。我所做的是将这些值四舍五入以将它们变成整数。

library(DESeq2)

NGS <- read.csv2("Countdata10.csv", header = TRUE, stringsAsFactors = FALSE)
Sinfo <- read.csv2(paste0("Sampleinfo.csv"), header = TRUE, stringsAsFactors = FALSE)

coldata <- DataFrame(apply(X = Sinfo, MARGIN = 2, FUN = as.factor)) # use apply instead of apply

NGSnum <- apply(X = NGS[,-1], MARGIN = 2, FUN = as.numeric)
NGSnum <- apply(X = NGSnum, MARGIN = 2, FUN = round)
rownames(NGSnum) <- NGS$Transcript
NGSFull <- DESeqDataSetFromMatrix(
  countData = NGSnum,
  colData = coldata,
  design = ~ Genotype + Treatment)

NGSFull$Genotype <- relevel(NGSFull$Genotype, "WT")

deseqNGS <- DESeq(NGSFull)
res <- results(deseqNGS)
res
© www.soinside.com 2019 - 2024. All rights reserved.