我不是很熟悉R中的循环,并且我很难陈述一个变量,这样它就可以被函数DESeqDataSetFromMatrix识别。
请是一个整数表。是包含示例id和与pls相对应的条件的数据帧。我验证了以下步骤在使用和的单个元素时不会出错。Run successfully .
我回顾了R中引用变量的相关文章:如何在R循环中引用变量名?如何在for循环中引用变量?
根据这些帖子,我在第3行用单括号,双括号和&;as.name&;修改了I。没有运气。DESeqDataSetFromMatrix正在读取~之后的文本,并报错。
cond=c("wt","dhx","mpp","taz")
for(i in cond){
dds <- DESeqDataSetFromMatrix(countData=pls,colData=metaData,design=~i, tidy = TRUE)
"sizeFactors"(dds) <- 1
paste0("PLS",i)<-DESeq(dds)
pdf <- paste(i,"-PLS_MA.pdf",sep="")
tsv <- paste(i,"-PLS.tsv",sep="")
pdf(file=pdf,paper = "a4r", width = 0, height = 0)
plotMA(paste0("PLS",i),ylim=c(-10,10))
dev.off()
write.table(results(paste0("PLS",i)),file = tsv,quote=FALSE, sep='t', col.names = NA)
}
用括号表示一个意外的符号错误。单独使用它,DESEqDataSetFromMatrix试图读取"i"从我的元数据列。
是R只是不能读取变量在某些情况下?一般来说,在R之外用一种更直接的语言编写循环,然后作为独立命令推送是不是更好?谢谢你的帮助,我希望有一个简单的解决办法。
对于其他可能在循环DESeq2函数时遇到麻烦的人,上面的评论解决了我的问题。
正确的输入:
dds <- DESeqDataSetFromMatrix(countData=pls,colData=metaData,design=as.formula(paste0("~", i)), tidy = TRUE)
。公式在我测试的所有DESeq函数中运行良好。
reformulation (i)在大多数情况下也很有效。
谢谢大家的帮助!