我有一个微阵列数据集,我已经标记了数据,使其看起来像这样:
[9967] piRNA piRNA piRNA piRNA piRNA tiRNA
[9973] piRNA piRNA piRNA piRNA piRNA tiRNA
[9979] snoRNA snoRNA snoRNA snoRNA snoRNA snoRNA
[9985] tiRNA tiRNA tiRNA tiRNA tiRNA tiRNA
[9991] tiRNA tiRNA tiRNA tiRNA tiRNA tiRNA
[9997] tiRNA tiRNA tiRNA tiRNA
所以基本上,我在一个单通道微阵列中有一堆不同的探针类型,我想做一个对比,看看哪些是DE。
我试着这样做如下:
design<-factor(levels(probe.type1))
design<-model.matrix(~0+design)
dim(design)
dim(E.ncRNA1)
subE.ncRNA1<-E.ncRNA1[ ,1:12]
fit<-lmFit(subE.ncRNA1, design)
contrast.matrix <- makeContrasts(levels=design)
trying <- contrasts.fit(fit, contrast.matrix)
try <- eBayes(trying)
try<-eBayes(trying)
volcanoplot(trying)
问题发生在我试图进行对比的地方:
contrast.matrix <- makeContrasts(pivsmi=piRNA-miRNA, levels=design)
makeContrasts中的错误(pivsmi=piRNA-miRNA,水平=设计):级别必须使用R中语法有效的名称,请参阅帮助(make.names)。无效名称:设计推定miRNA、设计子scRNA、设计库RNA
有人能告诉我我做错了什么吗?
在R中,语法有效的名称由字母、数字和点或下划线组成,以字母或点开头,后面不跟数字。
您的级别(designputative miRNA
、designsub scRNA
、designvault RNA
)包含空格,因此在语法上无效。
为了使您的级别在语法上有效,请选择
- 将级别中的空格替换为下划线,或
- 在您的级别上调用
make.names
,它会自动用句点替换空格:makeContrasts(pivsmi = piRNA - miRNA, levels = make.names(design, unique=TRUE))
。unique=TRUE
断言生成的元素是唯一的,这是列名所需要的