2010-12-15 49 views
18

utilisant R, je veux produire des chaînes de caractères multiples tels que:citation de pâte marque en chaîne de caractères, dans une boucle

"modelCheck("var1_d.bug")" 
"modelCheck("var2_d.bug")" 
... 
"modelCheck("var10_d.bug")" 

Je généralement utiliser une boucle et coller (si je ne l'ai pas eu à se soucier sur les guillemets) en tant que tels:

for(i in 1:10){ 
    str<-paste("modelCheck(var",i,"_d.bug)",sep="") 
    print(str) 
} 

Cependant, je dois inclure les guillemets dans la chaîne de caractères, d'où l'appel à l'aide?

Répondre

25

simplement escape the quotation marks avec antislashs:

paste("modelCheck(var\"",i,"_d.bug\")",sep="") 

Une alternative est d'utiliser des guillemets simples pour entourer la chaîne:

paste('modelCheck(var"',i,'_d.bug")',sep="") 
+6

Cela me donne la sortie qui comprend la double cotation, mais comprend également la barre oblique : "modelCheck (\" var1_d.bug \ ")". Comment échapper à l'évasion? – gjabel

+1

La barre oblique inverse ne fait pas partie de la chaîne, elle est simplement imprimée de cette façon. Vous pouvez vérifier en comptant les caractères à la main et en les comparant avec 'longueur (résultat)'. Plus important encore, qu'essayez-vous exactement de faire? – NPE

+0

Intéressant. J'essaye de créer beaucoup de fichiers script openbugs pour envoyer différents modèles (var1.bug, var2.bug, ...) à notre cluster de calcul. J'utilise la commande writeLines dans R pour créer ces fichiers de script rapidement. L'évasion semble fonctionner correctement dans ce but (après l'avoir testé). Je me demande pourquoi R montre le slash en utilisant l'impression si? – gjabel