将用户arg传递给DESeq2函数

问题描述 投票:3回答:1

我正在尝试使用命令行输入的参数在RScript中运行DESeq。我使用optparse来解析用户参数,并试图将设计参数传递给DESeqDataSetFromMatrix()函数。

我直接测试了这个功能,它完美地工作:

DESeq_tbl <- DESeqDataSetFromMatrix(countData=counts_tbl,
colData=coldata, design=~taxonomy)

但是,如果我尝试传递变量opt$design(这是一个字符串=“〜分类法”),我会收到以下错误:

DESeq_tbl <- DESeqDataSetFromMatrix(countData=counts_tbl,
colData=coldata, design=opt$design)

错误:$运算符对原子向量无效执行暂停

我已经尝试了noquote()cat / paste的各种组合,并创建整个命令作为字符串传递给DESeqDataSetFromMatrix()函数,但没有任何工作。任何建议将不胜感激。

解决方案

感谢Ben Bolker在下面的回答,以下工作:

DESeq_tbl <- DESeqDataSetFromMatrix(countData=counts_tbl,
colData=coldata, design=as.formula(opt$design))
r arguments string-parsing bioconductor optparse
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.