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

开发R包时,rmd文件的合适存放目录及无system.file()调用方案咨询

解决方案

首先,你需要把sample.rmd放在R包的**inst/目录**下,这是R包存放额外资源文件的标准位置,包安装后该目录下的文件会被完整保留在包的安装路径中。

然后修改你的doc函数,核心思路是先把包内的sample.rmd复制到当前工作目录(也就是你的项目目录),再渲染该副本,这样输出的sample.pdf就会生成在当前项目目录下,而非R库目录:

#' @title shiny app to print automated document
#' @import shiny rmarkdown utils
#' @return shiny app for documents. Type 'doc()' to launch doc.
#' @name doc
#' @examples
#' doc()
#' browseURL("sample.pdf")
#'
#' @export
#'
doc <- function() {
  # 获取包内sample.rmd的完整路径
  rmd_source <- system.file("sample.rmd", package = "你的包名称")
  # 将文件复制到当前工作目录(若已存在则覆盖)
  file.copy(rmd_source, "sample.rmd", overwrite = TRUE)
  # 渲染当前目录下的sample.rmd,输出PDF到当前目录
  rmarkdown::render("sample.rmd", output_file = "sample.pdf")
}

关键说明

  1. 语法修正:你原代码中rmarkdown::render的括号和逗号位置有误,已修正。
  2. 避免冗余加载:因为已经通过@import声明了依赖包,函数内无需再调用library()。
  3. 文件复制逻辑:通过file.copy把包内的模板文件复制到当前工作目录,既解决了模板文件的定位问题,又保证输出文件落在你期望的项目目录。如果不希望覆盖现有文件,可以把overwrite参数设为FALSE。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 12:43:16