R、 knitr和源函数:如何为html报告保留源文件注释

R、 knitr和源函数:如何为html报告保留源文件注释,r,knitr,R,Knitr,R控制台:当我调用源(“file\u of_functions.R”,echo=TRUE)时,所有源文件表达式,包括注释,都会打印到控制台 Knit HTML:当我将源代码(“file\u of_functions.R”,echo=TRUE)放在一个块中并编织成HTML时,除了注释之外,输出的内容是相同的 为了使我的代码和报告更清晰,我希望源文件的注释包含在html报告中 有什么建议吗 基本示例:将以下内容保存为f.R: # function to add a number to itself

R控制台:当我调用
源(“file\u of_functions.R”,echo=TRUE)
时,所有源文件表达式,包括注释,都会打印到控制台

Knit HTML:当我将
源代码(“file\u of_functions.R”,echo=TRUE)
放在一个块中并编织成HTML时,除了注释之外,输出的内容是相同的

为了使我的代码和报告更清晰,我希望源文件的注释包含在html报告中

有什么建议吗

基本示例:将以下内容保存为f.R:

# function to add a number to itself
f <- function(x) x+x
f(2)
当编织到html时,调用

```{r}
source("f.R",echo=TRUE)
```
产生相同的输出,但没有注释。

test.Rmd

---
output: html_document
---

```{r}
options(prompt = '> ')
```

```{r}
source('./test.r', echo = TRUE)
```

```{r}
source('./test.r', echo = TRUE, keep.source = TRUE)
```

我并不想将此作为答案发布,但我只想指出一种可能性,即您可以使用

```{r code=readLines('test.r')}
```

就个人而言,我认为这比使用
source()
要好得多,例如,默认情况下,您不会得到提示
(如果需要,您可以),并且R代码将被语法高亮显示。当然,您的评论将被保留。

source(…,keep.source=TRUE
)有效吗?这个答案很有效。为了其他有同样问题的人,请注意下面@Yihui的优雅解决方案。这非常有用。两个问题:(1)这仍然是你推荐的方法吗?(2) 也许它应该出现在官方文件中?(也许是的。对2.请随时点击编辑按钮(在我的任何网页上)提出对文档的任何更改:从2020年3月12日起,如果您不想评估代码,您似乎必须添加
eval=FALSE
标志。可能这个行为已经出现在knitr的早期版本中了…@Mikko它一直都是这个行为(因为
eval=TRUE
是默认值)。
```{r code=readLines('test.r')}
```