我可以强制knitr将“\ n”解释为传递给R函数的字符串中的实际换行符吗?

时间:2013-11-13 13:32:53

标签: r markdown knitr

我正在尝试使用knitr使用RStudio从.Rmd文件中将以下markdown编织为HTML:

注意:此代码将生成错误,因为您无法访问我正在查询的服务器,但有问题的HTML仍会呈现,我的问题只涉及HTML文件中代码的格式 - 而不是输出来自R.

SQL Code 

```{sql}
select 
  count(*) child_count
  ,year(eps_begin) year_plc
from vw_episodes
where eps_begin between '2009-01-01' and '2010-12-31'
  and fl_dur_7 = 0
group by 
  year(eps_begin)
```

R Code

```{r }
sqlQuery(cn, 
         "select 
                count(*) child_count
                ,year(eps_begin) year_plc
              from vw_episodes
              where eps_begin between '2009-01-01' and '2010-12-31'
                and fl_dur_7 = 0
              group by 
                year(eps_begin)")

```

我的问题涉及到我编织HTML时R代码的格式。我希望传递给sqlQuery()函数的SQL代码的格式与SQL块中生成的代码类似。但是,根据生成的HTML,knitr似乎没有将字符串中的\n解释为实际的换行符 - 它只是将其解释为文本。

生成的HTML(对于R chunk)如下所示:

<pre><code class="r">sqlQuery(cn, &quot;select \n                count(*) child_count\n                ,year(eps_begin) year_plc\n              from vw_episodes\n              where eps_begin between &#39;2009-01-01&#39; and &#39;2010-12-31&#39;\n                and fl_dur_7 = 0\n              group by \n                year(eps_begin)&quot;)
</code></pre>

当我真正想要的是这样的时候:

<pre><code class="r">sqlQuery(cn, 
    &quot;select
        count(*) child_count
        ,year(eps_begin) year_plc
    from vw_episodes
    where eps_begin between &#39;2009-01-01&#39; and &#39;2010-12-31&#39;     
        and fl_dur_7 = 0
    group by 
        year(eps_begin)&quot;)
</code></pre>

有关如何编写HTML并仍保留传递给R函数的字符串中的换行符的任何想法?

1 个答案:

答案 0 :(得分:2)

2017/09/21上的

更新:当前版本的 knitr 中的块选项tidy默认为FALSE,因此它是不再需要设置它(尽管如此,没有任何伤害。)


这是由于使用 formatR 包的default reformatting代码造成的;你可以通过tidy=FALSE

关闭它
```{r tidy=FALSE}