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

R Markdown/Knitr自定义输出目录时出现无法打开连接错误

解决R Markdown指定output_dir后source文件找不到的问题

问题核心原因

当你在rmarkdown::render中指定output_dir参数时,渲染过程会临时将工作目录切换到输出目录下。此时脚本中使用的相对路径(比如source("02-Scripts/03-LogMod-6-plot.R"))会以输出目录为基准查找文件,自然找不到项目根目录下的02-Scripts文件夹,从而触发文件无法打开的报错。

解决方案

方案一:用here包定位项目文件(推荐)

here包会自动识别R项目的根目录,不受工作目录切换影响,能准确定位所有文件。

  1. 安装并加载here包:
# 首次使用先安装
# install.packages("here")
library(here)
  1. 修改脚本中的source语句:
source(here("02-Scripts", "03-LogMod-6-plot.R"), local = knitr::knit_global())

方案二:修改knit函数固定工作目录

在YAML的knit函数中,指定knit_root_dir为原Rmd文件所在的目录,确保渲染时始终以项目根目录为基准查找文件:

---
title: 'MyTitle'
subtitle: 'Analysis XYZ'
author: "Boris et al."
date: "2023-01-22"
knit: (function(input, encoding) {
  input_dir <- dirname(input)
  rmarkdown::render(input,
                    encoding = "UTF-8",
                    output_dir = file.path(input_dir, "05-Reports"),
                    knit_root_dir = input_dir)
})
output: pdf_document
---

修改后,脚本中的source语句保持原有相对路径即可正常工作。

验证

两种方案都能确保渲染时正确找到02-Scripts下的脚本,同时将生成的PDF文件保存到05-Reports目录中。

内容的提问来源于stack exchange,提问作者boris

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 03:50:17