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

使用golem开发嵌入Rmarkdown的Shiny应用时文件调用失败求助

解决Golem打包Shiny应用后无法调用Rmarkdown文件的问题

问题根源

打包成R包后,原项目中的相对路径不再生效,且你的Rmd文件没有被正确纳入包的资源目录中——Golem/R包规范里,非R代码的资源文件(如Rmd、模板)需要放在inst目录下,否则打包时会被忽略。你之前用usethis::use_data_raw是错误的,这个函数用于处理数据集,不适合这类文档资源。

具体修复步骤

  1. 调整文件目录结构
    在Golem项目根目录下创建inst/reports文件夹,将R_Month_Report.Rmd、R_Month_report_word.Rmd、template_word.docx全部移动到这个文件夹内。

  2. 修改Shiny代码中的路径调用
    用system.file()函数获取包内资源的绝对路径(该函数会自动定位包安装后的资源位置),替换原来的相对路径:

    output$rendered_markdown <- renderText({ 
      # 获取包内Rmd文件的正确路径
      rmd_path <- system.file("reports", "R_Month_Report.Rmd", package = "autoreport")
      rmarkdown::render(
        input = rmd_path, 
        output_file = paste0(path_excel_all, "\\R_Month_Report", Sys.Date(),".html")
      ) 
    })
    

    调用其他Rmd或docx模板时,同样用system.file("reports", "目标文件名", package = "autoreport")来获取路径。

  3. 重新打包安装
    用devtools重新构建并安装包:

    devtools::install() # 可在项目环境中直接执行,或build后手动安装
    

    安装完成后,可通过system.file(package = "autoreport")查看包的安装路径,确认reports文件夹及其中的文件已被正确包含。

验证

重新运行autoreport::run_app(),Rmarkdown渲染功能即可正常工作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 07:33:20