【问题标题】:pass user arg to DESeq2 function将用户 arg 传递给 DESeq2 函数
【发布时间】:2017-02-25 05:13:41
【问题描述】:

我正在尝试使用从命令行输入的参数在 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))

【问题讨论】:

    标签: r arguments string-parsing bioconductor optparse


    【解决方案1】:

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

    【讨论】:

    • 非常感谢!我没听说过这种方法;你刚刚拯救了我的周末:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-30
    • 2021-04-25
    相关资源
    最近更新 更多