Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当文件名为变量时,将文件中的代码包含到RMarkdown中_R_Rstudio_R Markdown - Fatal编程技术网

当文件名为变量时,将文件中的代码包含到RMarkdown中

当文件名为变量时,将文件中的代码包含到RMarkdown中,r,rstudio,r-markdown,R,Rstudio,R Markdown,我想在RMarkdown中有一个R块,其中包含来自外部文件的代码 我希望包含该文件,而不是直接嵌入其内容,因为外部文件包含各种项目和脚本之间共享的代码,并且我希望确保每个程序使用最新版本。code=…chunk选项是为此而创建的 如果我整理整个文档,下面的方法效果很好。但是,如果我尝试在Rstudio中运行单个块(在开发过程中需要),我会得到一个错误“readLines(include_file)中的错误:未找到对象“include_file” 我如何让它工作,以便可以在Rstudio中运行块

我想在RMarkdown中有一个R块,其中包含来自外部文件的代码

我希望包含该文件,而不是直接嵌入其内容,因为外部文件包含各种项目和脚本之间共享的代码,并且我希望确保每个程序使用最新版本。
code=…
chunk选项是为此而创建的

如果我整理整个文档,下面的方法效果很好。但是,如果我尝试在Rstudio中运行单个块(在开发过程中需要),我会得到一个错误
“readLines(include_file)中的错误:未找到对象“include_file”

我如何让它工作,以便可以在Rstudio中运行块

可复制示例: 首先创建一些包含文件 然后将以下内容放入.Rmd文件中 这就是我编写整个文档时输出的样子


假设您有一个包含以下内容的文件
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
然后可以从源文件调用代码块,如下所示:

```{r}
<<cc_1>>
print(tmp)
<<cc_2>>
```
然后,您可以调用
的元素,例如

```{r}
print(tmp)
```

你不想只在一个块中获取脚本的源代码吗?谢谢@camille-是的,这样可以避免错误,但是你无法在输出文档中看到源代码。啊,我明白了。我想,如果在一个块中编写源代码,在另一个块中调用
readLines
,这将是非常多余的……事实上,这就是我目前使用的cludge。希望能有更简洁、更地道的东西。请参阅上一期的相关内容。谢谢,我知道
read\u chunk
,(并将其与Lyx一起使用)。不幸的是,它与缓存不兼容。因此需要使用
code=
来代替。我明白了,因此,除非编写整个文档,否则就无法使用第一个代码块来运行第二个代码块,对吗?此外,我测试了这一点,它不允许您在Rstudio中以交互方式运行各个代码块。只有当你把整个文件都编好的时候,它才会起作用。。。所以很遗憾,他没有回答问题。无论如何,谢谢你。
```{r}
knitr::read_chunk("source.R")
```
```{r}
<<cc_1>>
print(tmp)
<<cc_2>>
```
```{r include = FALSE}
<<cc_1>>
```
```{r}
print(tmp)
```