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

3

我正在尝试使用knitr将以下markdown从.Rmd文件中使用RStudio编织为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)")

```

我的问题与将R代码编织为HTML时的格式有关。我希望传递给sqlQuery()函数的SQL代码能够以与SQL块生成的代码类似的方式进行格式化。然而,根据生成的HTML来看,knitr似乎没有将字符串中的\n解释为实际的换行符-它只是将其解释为文本。

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

<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个回答

2

更新于2017/09/21:当前版本的knitr,选项tidy默认为FALSE,因此不再需要进行设置(但这样做也没有害处)。


这是由于使用formatR包进行代码重新格式化的默认操作导致的;您可以通过tidy=FALSE关闭它。

```{r tidy=FALSE}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接