在.Rmd文件的输出中显示.R脚本

5

是否可以在.rmd文件的输出中包含或显示.r脚本?
重要提示 - 只想显示.r文件! 尝试过source(filename.r);但是source不会显示它。 有什么想法吗?

**knitr Global Options**   

```{r echo=TRUE}
knitr::opts_chunk$set(tidy=FALSE, fig.path='figures/')
```

**Load Libraries**   

```{r echo=TRUE}
library(dplyr)
```

```{r echo=TRUE, include=TRUE}
source("external.R")
# the complete source code of the .r file should be displayed here
# possible?
```

这个需求的用例是什么?
使用.Rmd有助于文档编写。实际上,我所有的文档都是使用.Rmd创建的。
有些.R脚本需要很长时间才能运行(处理大量数据)。在这种情况下,使用.Rmd不太实际。更喜欢使用.R脚本。
如果.R的源代码可以“包含和显示”在.Rmd中,那么对于文档目的来说将是非常好的。

1个回答

13

对于这个特殊情况,有一个简单的解决方案。那就是将源代码分配给代码块选项code,然后knitr会将您的源代码视为写在代码块中,例如:

```{r, code = readLines('external.R')}
```

或者等价地,您可以使用file选项:

```{r, file = 'external.R'}
```

2
不错。我应该知道只要等到你带来完美而优雅的解决方案 :) - Josh O'Brien
@JoshO'Brien 哦不,請繼續保持你的動力 :) 謝謝!我回答這個問題只是因為它不是一個廣泛知道的功能,而且我很高興找到了一個使用案例。 - Yihui Xie
2
@WaldirLeoncio 这只是一个基本的子集问题。您可以使用readLines('external.R')[c(lines, you, want, to, use)] - Yihui Xie
Yihui,这个解决方案只是打印脚本代码还是也会执行它?我在这里遇到了一些奇怪的问题。 - Waldir Leoncio
您可以通过 eval = TRUEFALSE 来选择是否执行它。 - Yihui Xie
这篇文章发布已经有一段时间了。是否有办法在Rmd中自动化输出几个不同的脚本?也就是说,我想定义一个函数来打印这里的两行代码,唯一变化的是文件名。 - kputschko

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