【发布时间】:2020-02-17 16:34:12
【问题描述】:
我想在 RMarkdown 中有一个 R 块,其中包含来自外部文件的代码。
我想包含该文件,而不是直接嵌入其内容,因为外部文件包含在各种项目和脚本之间共享的代码,并且我想确保每个程序都使用最新版本。 code = ... 块选项就是为此而设计的。
以下方法效果很好如果我编织了整个文档。但是,如果我尝试在 Rstudio 中运行各个块(在开发过程中需要),我会收到错误 "Error in readLines(include_file) : object 'include_file' not found"。
如何让它工作,以便我可以在 Rstudio 中运行块?
可重现的例子:
首先创建一些包含文件
write_lines("x = 1", 'include_1.r')
write_lines("x = 2", 'include_2.r')
write_lines("x = 3", 'include_3.r')
write_lines("x = 4", 'include_4.r')
然后将以下内容放入一个.Rmd文件中
---
title: "Untitled"
output: html_document
---
```{r setup}
knitr::opts_chunk$set(echo = TRUE)
include_file = list.files(pattern = '^include_.+[Rr]$')
include_file = include_file[which.max(file.info(include_file)$mtime)]
```
I want to embed an R code from a file like this:
```{r, code = readLines(include_file)}
```
Then use the objects from the include file
```{r}
print(x)
```
这是我编织整个文档时输出的样子
【问题讨论】:
-
你不想只在一个块中获取脚本?
-
感谢@camille - 是的,这样可以避免错误,但是您不会在输出文档中看到源代码。
-
啊,我明白了。而且我想在一个块中获取并在另一个块中调用
readLines太多余了...... -
实际上这就是我现在正在使用的当前 cludge。希望有更简洁、更惯用的东西。
标签: r rstudio r-markdown