You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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,问题出在工作目录不匹配或调用路径错误。


解决方法

方案一:亲测可行的文件同目录方案

  1. 把RMarkdown文件和Cars plot.R移动到同一目录下
  2. 修改脚本代码,将ggplot图表赋值给变量:
library(tidyverse)

plot1 <- ggplot(data = mpg) + 
  geom_point(mapping = aes(x = displ, y = hwy))
  1. 在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
相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 06:55:23