我必须首先说我刚刚开始使用R编程。我无法创建数据的表达式集。当我尝试将化验数据和phenodata放在一起制作表达式时,我收到一个错误:
validObject(.Object)中的错误:“无效的类 “”ExpressionSet“”对象:sampleNames在assayData和。之间有所不同 phenoData“
请查看样本数据,我制作的现象表和R程序。我想应该修改phenodata以使其正常工作。
请让我知道如何解决这个问题并改变现象。
AssayData
0h-1 0h-2 6h-1 6h-2 12h-1 12h-2 24h-1 24h-2 48h-1 48h-2 72h-1 72h-2 96h-1 96h-2
171407 4.021342514 4.021342514 6.847201005 6.847201005 3.189312274 3.189312274 3.322687671 3.322687671 4.929574559 4.929574559 4.040127938 4.040127938 3.181587044 3.181587044
171415 267.8091012 267.8091012 358.8511895 358.8511895 266.4562608 266.4562608 210.259177 210.259177 243.1496956 243.1496956 248.2780935 248.2780935 235.7079055 235.7079055
171426 13.3620332 13.3620332 5.581083074 5.581083074 12.5236932 12.5236932 8.433621131 8.433621131 13.07390505 13.07390505 12.94673202 12.94673202 23.43214156 23.43214156
171453 37.65310777 37.65310777 27.88942772 27.88942772 54.7409581 54.7409581 78.86045287 78.86045287 63.61655487 63.61655487 67.31327606 67.31327606 62.35426899 62.35426899
PhenoData
condition time rep
0h-1 Control 0 1
0h-2 Control 0 2
6h-1 treatment 6 1
6h-2 treatment 6 2
12h-1 treatment 12 1
12h-2 treatment 12 2
24h-1 treatment 24 1
24h-2 treatment 24 2
48h-1 treatment 48 1
48h-2 treatment 48 2
72h-1 treatment 72 1
72h-2 treatment 72 2
96h-1 treatment 96 1
96h-2 treatment 96 2
我的代码:
library(""Biobase"")
library(""betr"")
exprs <- as.matrix(read.table(""Timecourse-Assaydata.txt"", header=TRUE, sep=""\t"", row.names=1, as.is=TRUE))
pData <- read.table(""Timecourse-Phenodata.txt"", row.names=1, header=TRUE, sep=""\t"")
metadata <- data.frame(labelDescription = c(""Hour of treatment"", ""Treatment time"", ""number of replicates""), row.names = c(""condition"", ""time"", ""rep""))
phenoData <- new(""AnnotatedDataFrame"", data = pData, varMetadata = metadata)
exprspop <- new(""ExpressionSet"", exprs = exprs, phenoData = phenoData)
validObject(.Object)中的错误:“无效的类 “”ExpressionSet“”对象:sampleNames在assayData和。之间有所不同 phenoData“
答案 0 :(得分:10)
此问题的正确位置在Bioconductor支持网站上。最好提供一个可重现的例子来捕捉问题的本质;创建可重现的示例通常有助于确定问题的原因。
library(Biobase)
exprs <- matrix(0, nrow=5, ncol=3,
dimnames=list(letters[1:5], LETTERS[1:3]))
pData <- data.frame(id=c("foo", "bar", "baz"),
row.names=c("x", "y", "z"))
phenoData <- AnnotatedDataFrame(data=pData)
导致
> ExpressionSet(exprs, phenoData=phenoData)
Error in validObject(.Object) :
invalid class "ExpressionSet" object: sampleNames differ between assayData and
phenoData
问题是colname
的{{1}}(即实验中的样本名称)与exprs
的{{1}}不同(即描述)样本)
row.names
并且解决方案是使它们相同
pData
可以使用> row.names(pData)
[1] "x" "y" "z"
> colnames(exprs)
[1] "A" "B" "C"
将其他元素添加到现有ExpressionSet中,例如
> colnames(exprs) <- row.names(pData)
> eset <- ExpressionSet(exprs, phenoData=phenoData)
> eset
ExpressionSet (storageMode: lockedEnvironment)
assayData: 5 features, 3 samples
element names: exprs
protocolData: none
phenoData
sampleNames: x y z
varLabels: id
varMetadata: labelDescription
featureData: none
experimentData: use 'experimentData(object)'
Annotation:
或从头开始
assayDataReplace()