【问题标题】:print backslash in R strings在 R 字符串中打印反斜杠
【发布时间】:2013-10-12 11:39:29
【问题描述】:

GNU R 3.02

> bib <- "\cite"
Error: '\c' is an unrecognized escape in character string starting ""\c"
> bib <- "\\cite"
> print(bib)
[1] "\\cite"
> sprintf(bib)
[1] "\\cite"
> 

我怎样才能用一个“\”打印出字符串变量 bib?

(我尝试了所有可以想象的方法,发现 R 将“\\”视为一个字符。)

我发现在很多情况下这不是问题,因为这通常由 R 内部处理,例如,如果字符串被用作绘图的文本。

但我需要将它发送到 LaTeX。所以我真的必须删除它。

我看到cat 可以解决问题。如果 cat 只能将其结果发送到字符串。

【问题讨论】:

    标签: r knitr


    【解决方案1】:

    你应该使用cat

    bib <- "\\cite"
    cat(bib)
    # \cite
    

    您可以通过在knitr 中设置一些选项来删除##[1]。这是一个示例块:

    <<newChunk,echo=FALSE,comment=NA,background=NA>>=
    bib <- "\\cite"
    cat(bib)
    @
    

    这让你\cite。另请注意,您可以全局设置这些选项。

    【讨论】:

    • 作者确实使用了cat。阅读到OP的结尾! :-)
    • @SimonO101 我错过了。
    • 感谢您提供有关选项的信息!非常感谢!
    • 有没有办法在内联代码部分做到这一点?
    【解决方案2】:

    字符元素“\cite”中没有反斜杠。反斜杠被解释为转义,两个字符“\c”被解释为 cntrl-c。除非那不是一个可识别的字符。见?Quotes。第二个版本只有一个反斜杠,后跟 4 个字母字符。数一下字符就知道了:

    nchar("\\cite")
    [1] 5
    

    【讨论】:

    • 我现在看到我的消息中有错字并已对其进行了编辑。显然,stackoverflow 在创建输出时将“\\”视为“\”。根据我的经验,这是预期的行为。
    【解决方案3】:

    好的,

    <<echo=FALSE,result='asis'>>
    result <- cat(rbib)
    @
    

    成功了(没有result &lt;- 位,添加了[1])。只是感觉很笨拙。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-22
      • 1970-01-01
      • 2013-11-10
      • 2017-06-13
      • 2014-12-04
      • 2012-08-02
      • 2019-01-13
      相关资源
      最近更新 更多