R 函数无法识别变量

时间:2021-01-28 17:07:44

标签: r

我对 R 中的循环不是很熟悉,并且很难声明一个变量,以便它可以被函数 DESeqDataSetFromMatrix 识别。

pls 是一个整数表。 metaData 是一个包含样本 ID 和与 pls 对应的条件的数据框。我验证了以下步骤运行无错误,cond 的各个元素运行成功。

我查看了有关在 R 中引用变量的相关帖子: How to reference variable names in a for loop in R? How to reference a variable in a for loop?

基于这些帖子,我用单括号、双括号和“as.name”修改了第 3 行中的 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)
}

使用方括号,会出现意外的符号错误。 单独使用 i 时,DESEqDataSetFromMatrix 尝试从我的元数据列中读取“i”。

在某些情况下,R 是否无法读取变量?一般来说,用更直接的语言在 R 之外编写循环,然后作为独立命令推送会更好吗?感谢您的帮助——我希望有一个简单的解决方法。

1 个答案:

答案 0 :(得分:0)

对于在使用 DESeq2 函数循环时可能遇到问题的其他人,上面的评论解决了我的问题。

正确输入:

dds <- DESeqDataSetFromMatrix(countData=pls,colData=metaData,design=as.formula(paste0("~", i)), tidy = TRUE)

as.formula 适用于我测试过的所有 DESeq 函数。

reformulate(i) 在大多数情况下也运行良好。

谢谢大家的帮助!