将用户参数传递给DESeq2函数

3
我正在尝试在RScript中使用从命令行输入的参数运行DESeq。我使用optparse解析用户参数,并尝试将设计参数传递到DESeqDataSetFromMatrix()函数中。
我直接测试了该函数,它完美地工作:
DESeq_tbl <- DESeqDataSetFromMatrix(countData=counts_tbl,
colData=coldata, design=~taxonomy)

然而,如果我尝试传递变量opt$design(它是一个字符串 =“〜taxonomy”),我会得到以下错误:
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))
1个回答

5

我认为你需要使用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

非常感谢!我之前从来没听说过这个方法,你真是救了我的周末 :) - SummerEla
我不知道波浪号()需要成为公式的一部分。我使用了```as.formula("taxonomy")```。 - Muslimbek Abduganiev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接