从R Markdown和Knitr中删除R输出中的哈希标记

78
我正在使用RStudio编写R Markdown文件。如何在最终的HTML输出文件中删除显示在代码输出之前的井号(##)?
例如:
---
output: html_document
---

```{r}
head(cars)
```

enter image description here


8
考虑哈希的目的是值得的。它们使得从您的文档中复制R代码到R控制台变得容易,因为哈希符号将R输出注释掉,因此会被忽略。 - Gregory
你也可以在Mac上使用command + shift + c或在PC上使用control + shift + c来删除井号,如果需要的话。 - rawr
2个回答

129
你可以在代码块选项中添加类似以下的内容:
comment=NA # to remove all hashes

或者

comment='%' # to use a different character

这里提供更多关于knitr的帮助: http://yihui.name/knitr/options

如果您正在使用R Markdown,您的代码块可能如下所示:

```{r comment=NA}
summary(cars)
```

如果您想全局更改此内容,可以在文档中包含一个块:
```{r include=FALSE}
knitr::opts_chunk$set(comment = NA)
```

25
如果您想从所有输出中删除哈希符号,可以设置 opts_chunk$set(comment = NA) - Ramnath
9
如果您希望结果显示为普通文本而非代码,可以使用 results='asis',并且不需要使用 comment - Molx
1
@Ramnath,你可能需要提到为了使这个工作正常,你需要在单元格中添加library(knitr) - cbrnr

4

只有HTML

如果您的输出仅为HTML,则可以充分利用PRE或CODE HTML标记。

示例

```{r my_pre_example,echo=FALSE,include=TRUE,results='asis'}
knitr::opts_chunk$set(comment = NA)
cat('<pre>')
print(t.test(mtcars$mpg,mtcars$wt))
cat('</pre>')
```

HTML结果:

    Welch双样本t检验

数据:mtcars$mpg和mtcars$wt t值=15.633,自由度=32.633,p值<0.00000000000000022 备择假设:平均值的真实差异不等于0 95%置信区间: 14.67644 19.07031 样本估计值: x的均值 y的均值 20.09062 3.21725

仅PDF

如果您的输出是PDF,则可能需要一些替换函数。这里是我正在使用的:

```r
tidyPrint <- function(data) {
    content <- paste0(data,collapse = "\n\n")
    content <- str_replace_all(content,"\\t","    ")
    content <- str_replace_all(content,"\\ ","\\\\ ")
    content <- str_replace_all(content,"\\$","\\\\$")
    content <- str_replace_all(content,"\\*","\\\\*")
    content <- str_replace_all(content,":",": ")
    return(content)
  }
```

示例

代码也需要稍作修改:

```{r my_pre_example,echo=FALSE,include=TRUE,results='asis'}
knitr::opts_chunk$set(comment = NA)
resultTTest <- capture.output(t.test(mtcars$mpg,mtcars$wt))
cat(tidyPrint(resultTTest))
```

PDF结果

PDF结果

PDF和HTML

如果您确实需要页面在PDF和HTML两种情况下工作,那么tidyPrint在最后一步应该有所不同。

注:tidyPrint是指一种用于将HTML转换为PDF的工具。

```r
tidyPrint <- function(data) {
    content <- paste0(data,collapse = "\n\n")
    content <- str_replace_all(content,"\\t","    ")
    content <- str_replace_all(content,"\\ ","\\\\ ")
    content <- str_replace_all(content,"\\$","\\\\$")
    content <- str_replace_all(content,"\\*","\\\\*")
    content <- str_replace_all(content,":",": ")
    return(paste("<code>",content,"</code>\n"))
  }
```

结果

PDF 结果与之前相同,HTML 结果接近之前的版本,但是带有一些额外的边框。

混合版本中的 HTML 结果

虽然不完美,但可能已经足够了。


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