2010-12-15 17 views
18

Korzystanie R, chcę produkować wiele ciągów znaków takich jak:pasta cudzysłowów w ciągu znaków, wewnątrz pętli

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

I zazwyczaj użyć pętli for i pasty (jeśli nie trzeba się martwić o podwójnych cudzysłowów) jako takie:

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

jednak muszę to podwójne cudzysłowy wewnątrz ciągu znaków, stąd apel o pomoc?

Odpowiedz

25

Wystarczy escape the quotation marks z ukośniki:

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

Alternatywą jest użycie apostrofów aby dołączyć ciąg:

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

To daje mi moc, która zawiera podwójne cytat, ale także zawiera ukośnik : "modelCheck (\" var1_d.bug \ ")". Jak uciec przed ucieczką? – gjabel

+1

Ukośnik odwrotny nie jest częścią napisu, jest po prostu drukowany w ten sposób. Możesz zweryfikować, licząc znaki ręcznie i porównując z 'length (result)'. Co ważniejsze, co dokładnie próbujesz zrobić? – NPE

+0

Interesujące. Próbuję utworzyć wiele plików skryptów openbugs, aby wysyłać różne modele (var1.bug, var2.bug, ...) do naszego klastra obliczeniowego. Używam polecenia writeLines w R, aby szybko utworzyć te pliki skryptów. Wydaje się, że ucieczka działa prawidłowo w tym celu (po prostu ją przetestowano). Zastanawiam się, dlaczego R pokazuje kreskę podczas korzystania z drukowania? – gjabel

Powiązane problemy