2010-12-15 9 views
18

con R, quiero producir múltiples cadenas de caracteres tales como:pasta de comillas en la cadena de caracteres, dentro de un bucle

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

Por lo general se utiliza un bucle y pegar (si no tuviera que preocuparse sobre las comillas dobles), tales como:

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

Sin embargo, tengo que incluir las comillas dobles dentro de la cadena de caracteres, por lo tanto, la petición de ayuda?

Respuesta

25

Simplemente escape the quotation marks con barras invertidas:

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

Una alternativa es utilizar comillas simples para delimitar la cadena:

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

Esto me está dando salida que incluye la doble cita, sino que también incluye la barra : "modelCheck (\" var1_d.bug \ ")". ¿Cómo escapar del escape? – gjabel

+1

La barra diagonal inversa no es parte de la cadena, simplemente se imprime de esa manera. Puede verificar contando los caracteres a mano y comparando con 'length (result)'. Más importante aún, ¿qué estás tratando de hacer exactamente? – NPE

+0

Interesante. Estoy intentando crear muchos archivos de script de Openbugs para enviar diferentes modelos (var1.bug, var2.bug, ...) a nuestro clúster informático. Estoy usando el comando writeLines en R para crear estos archivos de script rápidamente. El escape parece funcionar correctamente para este propósito (después de haberlo probado). Me pregunto por qué R muestra la barra al usar la impresión. – gjabel

Cuestiones relacionadas