【发布时间】:2018-09-19 03:08:11
【问题描述】:
是否可以在 .Rmd 中包含来自外部 R 脚本的代码,同时运行代码、显示代码并在输出 .HTML 文件中显示其结果?例如,如果我有
x <- 1
y <- 3
z <- x + y
z
在external.R。在输出文档中,我希望看到上面的代码以及z 的结果,即 4。本质上,我希望与将上面的内容复制/粘贴到 R 块中的结果相同。所以我想要
```{r}
some.library::some.function("external.R")
```
相当于
```{r}
x <- 1
y <- 3
z <- x + y
z
```
在输出 HTML 文件中。
我已经尝试过knitr::read_chunk('external.R) 和source('external.R) 之类的东西,但是这些都不显示代码。我错过了一些简单的东西吗?
编辑
我发现source('external.R', echo = TRUE) 会产生我所要求的内容,但输出显示的代码/结果的每一行都以## 开头。如果代码只是简单地复制/粘贴到 .Rmd 中的一个块中,有什么方法可以让它看起来像这样?
【问题讨论】:
-
我想我的第一个问题是:为什么?你想做什么?其次,如果我执行
source("my_script.R", echo = T),我看不到任何以##为前缀的代码/结果。如果我将代码复制并粘贴到 R 终端中,它看起来完全一样。也许我理解错了? -
我们会,我不会将结果与它在 R 终端中的样子进行比较。我将它与它在输出 .HTML 文件中的外观进行比较。
-
我给我的学生一个作业,他们必须完成几项冗长的任务,出于组织目的,我认为使用外部脚本比将所有内容放在多个代码块中更容易。此外,如果他们在 .Rmd 中的代码块中逐行执行代码,Rstudio 会将输出放在块下的“抽屉”中,这对我来说很烦人,因为我认为它的出现更有意义在控制台中,就像在简单的 .R 文件中一样。
-
我不太关注。您似乎混淆了 RMarkdown 和直接 R 文件。如果您不喜欢 RMarkdown 呈现代码和文本的方式,请不要使用 RMarkdown。但是你说你“没有将结果与它在 R 终端中的样子进行比较。”那么你实际上想要做什么以及你是如何执行代码的?在 R 终端中?在 RStudio 中?代码在 RMarkdown 文件中吗?或者在 R 脚本中。我让我的学生非常成功地使用了 RMarkdown 和 R Notebooks。在我看来,它鼓励透明的代码文档和一致的编码标准。
-
我喜欢 Rmarkdown 呈现代码和文本的方式。我的意思是,如果我使用
source('external.R', echo = T),则输出HTML 文件的每一行前面都有##。如果我只是将外部 R 代码的内容复制/粘贴到 .Rmd 中的代码块中,它会在没有##的情况下呈现。那有意义吗?我对结果的评论是终端参考了您对 R 终端中结果的第一条评论。我并不真正关心这一点 - 我只关心它在输出 HTML 文件中的外观。
标签: r r-markdown knitr