2010-12-15 121 views
18

使用R内部,我要产生多个字符串如:粘贴引号为字符串,循环

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

我通常会用一个for循环和粘贴(如果我没有担心关于双引号),这样:

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

不过,我需要包含字符串中的双引号,因此求助的呼吁?

回答

25

只需escape the quotation marks用反斜杠:

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

另一种方法是使用单引号将字符串括:

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

这是给我的,包括双引号输出之外,还包括斜杠:“modelCheck(\”var1_d.bug \“)”。如何逃脱逃生? – gjabel 2010-12-15 18:03:11

+1

反斜杠不是字符串的一部分,它只是以这种方式打印。您可以通过手动计算字符并与“长度(结果)”进行比较来进行验证。更重要的是,你究竟想要做什么? – NPE 2010-12-15 18:21:17

+0

有趣。我正在尝试创建大量的openbugs脚本文件,以向计算集群发送不同的模型(var1.bug,var2.bug,...)。我在R中使用writeLines命令来快速创建这些脚本文件。为了这个目的,转义似乎正常工作(刚刚测试过)。我想知道为什么R在使用打印时显示斜线? – gjabel 2010-12-15 18:37:21