dww*_*dww 5 r rstudio r-markdown
我想在 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')
Run Code Online (Sandbox Code Playgroud)
---
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)
```
Run Code Online (Sandbox Code Playgroud)
这是我编织整个文档时输出的样子
source.R假设您有一个包含以下内容的文件:
# first code chunk to be included
## @knitr cc_1
var1 <- runif(10)
var2 <- runif(10)
tmp <- sum(var1)
## @knitr end_cc_1
# second code chunk to be included
## @knitr cc_2
prod(var1, var2)
## @knitr end_cc_2
Run Code Online (Sandbox Code Playgroud)
然后你首先必须读取该文件:
```{r}
knitr::read_chunk("source.R")
```
Run Code Online (Sandbox Code Playgroud)
然后您可以从源文件中调用代码块,如下所示:
```{r}
<<cc_1>>
print(tmp)
<<cc_2>>
```
Run Code Online (Sandbox Code Playgroud)
请注意,所有内容都可以位于同一代码块中,但read_chunk()
必须在之前调用<<cc_1>>,并且在本例中<<cc_2>>要求tmp
<<cc_1>>必须在之前调用<<cc_2>>。
顺便说一句,如果你想默默地评估一堆代码,你可以使用include = FALSE,例如
```{r include = FALSE}
<<cc_1>>
```
Run Code Online (Sandbox Code Playgroud)
然后,您可以调用 的元素<<cc_1>>,例如
```{r}
print(tmp)
```
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
342 次 |
| 最近记录: |