2016-10-16 4 views
0

J'essaie d'exécuter DESeq dans un RScript en utilisant les paramètres entrés depuis la ligne de commande. J'ai utilisé optparse pour analyser les arguments des utilisateurs et j'essaie de passer l'argument de conception dans la fonction DESeqDataSetFromMatrix().R: passe l'argument utilisateur à la fonction DESeq2

J'ai testé directement la fonction et il fonctionne parfaitement:

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

Cependant, si je tente de passer la variable « opt design $ » (ce qui est une chaîne de caractères = « ~ taxonomie »), je reçois l'erreur suivante:

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

Error: $ operator is invalid for atomic vectors 
Execution halted 

J'ai essayé noquote(), diverses combinaisons de chat/coller et créer la commande entière comme une chaîne pour passer à la fonction DESeqDataSetFromMatrix(), mais rien n'a fonctionné. Tout avis serait grandement apprécié. Merci!

LA SOLUTION: Merci à la réponse de Ben Bolker ci-dessous, ce qui suit travaillé:

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

Répondre

1

Je pense que vous avez besoin 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 
+0

Merci beaucoup! Je n'ai pas entendu parler de cette méthode; vous venez de sauver mon week-end :) – SummerEla