R语言sprintf内引号转义问题:如何生成含双引号的目标字符串
解决R中sprintf生成带双引号字符串的问题
你的代码报错核心原因是字符串中双引号的嵌套冲突:R会把格式字符串里的"gen"前面的双引号当成整个格式字符串的结束标记,导致语法错误。
用sprintf实现需求有两种简单方法:
方法1:用单引号包裹外层格式字符串
把整个格式字符串用单引号括起来,内部保留双引号,这样R就不会混淆引号边界:
try1 <- sprintf('N(X(%d), newx="gen")', seq.int(1)) # 输出结果:"N(X(1), newx=\"gen\")" # 直接打印会显示:N(X(1), newx="gen")
方法2:转义内部双引号
如果坚持用双引号包裹外层字符串,需要在内部的双引号前加反斜杠\转义,告诉R这是字符串内容的一部分,不是结束标记:
try1 <- sprintf("N(X(%d), newx=\"gen\")", seq.int(1)) # 效果和方法1完全一致
执行后用print(try1)查看,就能得到你需要的目标格式字符串。
内容的提问来源于stack exchange,提问作者user20536224
相关产品推荐
相关产品推荐

