如何在RMarkdown中调用外部R脚本的图表并解决报错
问题:RMarkdown调用外部ggplot脚本找不到文件,且需无代码显示图表
我有一段保存于Cars plot.R的ggplot代码:
library(tidyverse) ggplot(data = mpg) + geom_point(mapping = aes(x = displ, y = hwy))
在路径为C:/Documents/Project的RMarkdown文件中,尝试用source("Cars plot.R")调用该脚本并隐藏代码显示图表时,触发报错:
Warning in file(filename, "r", encoding = encoding) : cannot open file 'Cars plot.R': No such file or directory Error in file(filename, "r", encoding = encoding) : cannot open the connection
脚本实际路径是C:/Documents/Project/Codes,问题出在工作目录不匹配或调用路径错误。
解决方法
方案一:亲测可行的文件同目录方案
- 把RMarkdown文件和
Cars plot.R移动到同一目录下 - 修改脚本代码,将ggplot图表赋值给变量:
library(tidyverse) plot1 <- ggplot(data = mpg) + geom_point(mapping = aes(x = displ, y = hwy))
- 在RMarkdown里分两个代码块实现:
- 第一个代码块加载脚本,完全隐藏代码:
```{r, include = FALSE} source("Cars plot.R")
- 第二个代码块渲染图表,只显示图表不显示代码: ```r ```{r, echo = FALSE} plot1
#### 方案二:无需移动文件的路径优化方案 不用移动文件,直接通过正确路径调用脚本即可: 1. 保持原文件路径不变,在RMarkdown中使用**绝对路径**调用: ```r ```{r, include = FALSE} source("C:/Documents/Project/Codes/Cars plot.R")
或者用**相对路径**(RMarkdown在`Project`目录,脚本在子目录`Codes`下): ```r ```{r, include = FALSE} source("./Codes/Cars plot.R")
2. 同样需要在脚本中将ggplot赋值为`plot1`,再用`echo=FALSE`的代码块渲染图表。 --- 内容的提问来源于stack exchange,提问作者Jay Bee
相关产品推荐
相关产品推荐

