R: передать аргумент пользователя в функцию DESeq2

Я пытаюсь запустить DESeq в RScript, используя параметры ввода из командной строки. Я использовал 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)

Error: $ operator is invalid for atomic vectors
Execution halted

Я пробовал noquote(), различные комбинации cat/paste и создавал всю команду в виде строки для передачи функции DESeqDataSetFromMatrix(), но ничего не помогло. Любой совет будет принята с благодарностью. Спасибо!

РЕШЕНИЕ: Благодаря ответу Бена Болкера ниже, сработало следующее:

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

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
Другие вопросы по тегам