我尝试使用命令行输入的参数在RScript中运行DESeq
。我使用optparse
来解析用户参数,并尝试将设计参数传递给DESeqDataSetFromMatrix()
函数。
我直接测试了这个功能,它完美无缺:
DESeq_tbl <- DESeqDataSetFromMatrix(countData=counts_tbl,
colData=coldata, design=~taxonomy)
但是,如果我尝试传递变量opt$design
(这是一个字符串=&#34;〜分类法&#34;),我会收到以下错误:
DESeq_tbl <- DESeqDataSetFromMatrix(countData=counts_tbl,
colData=coldata, design=opt$design)
错误:$ operator对原子向量无效执行暂停
我已尝试noquote()
,cat
/ paste
的各种组合,并将整个命令创建为字符串以传递给DESeqDataSetFromMatrix()
函数,但没有工作。任何建议都将不胜感激。
感谢Ben Bolker在下面的回答,以下工作:
DESeq_tbl <- DESeqDataSetFromMatrix(countData=counts_tbl,
colData=coldata, design=as.formula(opt$design))
答案 0 :(得分:3)
我认为你需要as.formula(opt$design)
。
x <- "~taxonomy"
f <- ~taxonomy
str(f)
## Class 'formula' language ~taxonomy
## ..- attr(*, ".Environment")=<environment: R_GlobalEnv>
identical(f,as.formula(x)) ## TRUE