在 R Shiny 应用程序中渲染 R Markdown 文档时参考书目不起作用

2023-11-30

Problem

我正在尝试在 Shiny 应用程序中渲染 R Markdown 文档,我已经使用 David 在这篇文章中非常有用的解决方案成功实现了这一点(Shiny 应用程序中的 RMarkdown)。但是,我无法使用 .bib 文件中的引用来呈现该文档,该文件与 Shiny 应用程序和 R Markdown 文档位于同一目录中。请在下面找到一个最小的可重现示例。

R Markdown 文档

RMarkdownFile.rmd

---
title: "RMarkdownFile"
author: "Test Author"
date: "15/10/2020"
output: html_document
bibliography: bibliography.bib
link-citations: yes
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

# Statement

ggplot2 [@wickham2016ggplot2] is a great package!

## References

参考书目

参考书目.bib

@book{wickham2016ggplot2,
  title={ggplot2: elegant graphics for data analysis},
  author={Wickham, Hadley},
  year={2016},
  publisher={springer}
}

闪亮的应用程序

app.R

library(shiny)
library(knitr)

rmdfiles <- c("RMarkdownFile.rmd")
sapply(rmdfiles, knit, quiet = T)

ui <- shinyUI(
    fluidPage(
        withMathJax(includeMarkdown("RMarkdownFile.md"))
  )
)
server <- function(input, output) { }

shinyApp(ui, server)

Result

在应用程序外部编织 RMarkdownFile.rmd 效果很好,产生以下输出

RMarkdownFile
Test Author
15/10/2020
Statement
ggplot2 (Wickham 2016) is a great package!

References
Wickham, Hadley. 2016. Ggplot2: Elegant Graphics for Data Analysis. springer.

然而,如上所述在 Shiny 应用程序中渲染 RMarkdownFile.md 无法从 bibliography.bib 文件生成文档中的引文和参考文献,如下所示

Statement
ggplot2 [@wickham2016ggplot2] is a great package!

References

更新 - 解决方案

在尝试了几种不同的方法之后,最简单的方法最终成功了。下面是更新后的 Shiny 应用程序,其中包括从 R markdown 文档呈现的 html 文档以及引用。

app.R

library(shiny)
library(knitr)

rmarkdown::render("RMarkdownFile.Rmd")

ui <- shinyUI(
    fluidPage(
        includeHTML("RMarkdownFile.html")
  )
)
server <- function(input, output) { }

shinyApp(ui, server)

附加问题

然而......虽然这适用于从 R markdown 生成的基本 HTML 文档,但在 RMarkdown 文档的 YAML 块中包含“self_contained: false”时,如下所示

---
title: "RMarkdownFile"
author: "Test Author"
date: "15/10/2020"
output: 
    html_document:
        self_contained: false
bibliography: bibliography.bib
link-citations: yes
---

导致放置在补充文件夹中的项目(在本例中标题为“RMarkdownFile_files”)无法被 Shiny 应用程序找到。通过 Rstudio devtools 检查 Shiny 中缺失的元素会发现以下错误:

无法加载资源:服务器响应状态为 404(未找到)

相反,当在 YAML 块中包含“self_contained: true”时,元素不再丢失,但我无法访问使用闪亮仪表板的非 reprex Shiny 应用程序中的多个选项卡。

编辑:我现在已经在另一篇文章中记录了这个问题使用闪亮仪表板在 R Shiny 应用程序中包含从 RMarkdown 渲染的 HTML 文件会导致 tabItems 损坏

正确方法

编辑:这些问题现已使用下面的代码得到解决,请注意,RMarkdownFile.html 文件必须放置在 Shiny 应用程序目录中的“www”文件夹中,除非直接在那里渲染。

library(shiny)
library(knitr)

rmarkdown::render("RMarkdownFile.Rmd")

ui <- shinyUI(
    fluidPage(
        htmltools::tags$iframe(src = "RMarkdownFile.html", width = '100%',  height = 1000,  style = "border:none;"))
  )
)
server <- function(input, output) { }

shinyApp(ui, server)

正如我上面更新的帖子中所详述的,要在 Shiny 应用程序中包含 HTML 文档,请使用以下代码(事后看来很明显!):

library(shiny)
library(knitr)

rmarkdown::render("RMarkdownFile.Rmd")

ui <- shinyUI(
    fluidPage(
        includeHTML("RMarkdownFile.html")
  )
)
server <- function(input, output) { }

shinyApp(ui, server)

这适用于一个非常基本的闪亮应用程序,但是使用闪亮仪表板会产生其他问题,详细信息请参见此处,使用闪亮仪表板在 R Shiny 应用程序中包含从 RMarkdown 渲染的 HTML 文件会导致 tabItems 损坏

编辑:这些问题现已使用下面的代码得到解决,请注意,RMarkdownFile.html 文件必须放置在 Shiny 应用程序目录中的“www”文件夹中,除非直接在那里渲染。

library(shiny)
library(knitr)

rmarkdown::render("RMarkdownFile.Rmd")

ui <- shinyUI(
    fluidPage(
        htmltools::tags$iframe(src = "RMarkdownFile.html", width = '100%',  height = 1000,  style = "border:none;"))
  )
)
server <- function(input, output) { }

shinyApp(ui, server)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 R Shiny 应用程序中渲染 R Markdown 文档时参考书目不起作用 的相关文章

随机推荐

  • Cocoa:带有用于切换选项卡的工具栏图标的选项卡视图

    各种首选项对话框 Safari Mail Xcode4 和任何使用 NSPreferences 的对话框 和 Xcode4 的组织器使用让人想起选项卡视图的东西 只不过它使用工具栏按钮在选项卡之间切换 这些按钮被 按下 实现这种选项卡视图的
  • 到期时自动刷新 ASP.NET 输出缓存

    我有一些昂贵的页面 我使用 ASP NET 输出缓存进行缓存 如下所示 OutputCache Duration 3600 VaryByParam none 显然 缓存将在 3600 秒 1 小时 后过期 下一个碰巧加载该页面的可怜人将不得
  • Spring 与 Jackson ObjectMapper 和 Java 8 Time 集成 (JSR-310)

    我正在努力配置 Spring Integration DSL 转换器使用的 自定义 ObjectMapper 我收到一个java time Instant我想将其解析为对象属性的 json 表示形式 IE 类型 测试 来源 测试 时间戳 e
  • 重用缓存的 Spark RDD

    Spark 是否有可能在另一个应用程序中 或在同一应用程序的另一个运行中 重用缓存的 RDD JavaRDD
  • 如何从 Capistrano 运行 rake 任务?

    我已经有一个可以在生产服务器上部署我的应用程序的deploy rb 我的应用程序包含一个自定义 rake 任务 lib tasks 目录中的 rake 文件 我想创建一个 cap 任务来远程运行该 rake 任务 更明确一点 在你的 con
  • 发送 APN 返回 BadDeviceToken,DeviceToken 格式应该是什么?

    我的后端使用 Node js 和 Express js 使用npm apn包 它使用 Apple 的新提供商身份验证令牌 iOS应用程序获得许可并将收到的32字节设备令牌发送到后端 编码为base64字符串 但是 当尝试使用设备令牌 编码为
  • SpringMVC-FileUpload - 客户端发送的请求在语法上不正确

    我见过几个关于同一主题的 qt 但我没有发现这个错误的任何线索 我正在研究 POC 并点击下面的链接 http spring io guides gs uploading files 正如上面教程中提到的 在独立模式下 spring emb
  • Sort() 和 CompareTo() 方法的内部工作原理

    我一直在试图弄清楚如何CompareTo 方法在内部有效 但我失败了 我搜索过这个网站并阅读了一些帖子 我想我已经在 MSDN 上看到了关于这个主题的所有内容 但我似乎不明白 一个 MSDN 示例 public int CompareTo
  • Geckodriver Selenium 自动下载 PDF

    我正在尝试在 geckodriver Firefox 中自动下载 pdf 文件 我搜索了 stackoverflow 和其他资源 认为下面的代码应该可以工作 profile set preference browser download f
  • MySQL 连接器/C++ 错误访问崩溃

    在 Xcode 中使用 C 我尝试使用 MySQL Connector C 访问 MySQL 数据库 问题是程序 用 Xcode 编译 总是崩溃 EXC BAD ACCESS code 13 address 0x0 打电话时 driver
  • 如何将画布上的图片复制到剪贴板?

    我有一些 Tkinter 画布以及上面的一些线条和文本图片 有没有简单的方法将其复制到剪贴板 你可以使用 postscript画布的方法来获取内容的封装 PostScript EPS 表示形式 然后 使用 图像魔术师的 Python 绑定
  • 在打字稿中使用联合类型时属性不存在

    假设我有两个接口 interface Box x number y number and interface ColouredBox x number y number colour string 出于这个问题的目的 假设我无法更改接口 现
  • 在运行时更改谷歌地图 v3 中的光标

    The draggableCursor可以在创建时在 google maps Map 对象中设置选项 有什么方法可以在运行时设置此选项吗 或者还有其他干净的方法如何在运行时更改光标 我已经搜索过文档但没有什么比setDraggableCur
  • 使用 Google Cloud Storage 的 Apache Drill

    Apache Drill 功能列表提到它可以从 Google Cloud Storage 查询数据 但我找不到任何有关如何执行此操作的信息 我已经让它在 S3 上工作得很好 但我怀疑我在 Google 云存储方面错过了一些非常简单的东西 有
  • 在android studio上设置flutter错误

    为 android studio 设置 flutter 时出错 我试过 重复这个过程 删除android studio并重新启动 创建项目时出错 无法在 Flutter SDK Target 目录中创建项目 C src flutter pa
  • Facebook 使用 C# 使用 Graph API 检索数据

    我使用 c net 创建了桌面 Facebook 应用程序 我想检索用户的消息 帖子和聊天记录 这是检索用户所有信息的便捷方法 我已经开始使用 Facebook Graph API 但我没有得到任何示例 谁能帮我 聚会有点晚了 但无论如何
  • codeigniter - APPPATH 在控制器之后返回路径

    我在整理应用程序中的路径时遇到问题 我正在使用 APPPATH 函数在数据库中读取 写入图像的字符串路径 问题是 APPPATH 将函数放在控制器之后 这是我获取 css 的函数 当我去http localhost project inde
  • 使用 Process.Start() 时 Windows 窗体 MouseUp 触发两次

    在我的 Windows 窗体应用程序中 如果单击其中一项 我必须打开一个包含特定文件夹的新资源管理器窗口 我正在监听 MouseUp 事件 因为我已经有一些点击检测 我需要点击坐标 现在如果我打开一个新的资源管理器窗口 private vo
  • Paho Mqtt Android 连接到代理失败,并显示 (32103)

    我的网络中有一个 ActiveMQ 代理正在监听 1883 mqtt 如果我使用简单的 Java 应用程序和 mqtt client 0 4 0 jar 库连接到该代理 则一切正常 现在我想使用 Android 设备连接到该经纪人 不幸的是
  • 在 R Shiny 应用程序中渲染 R Markdown 文档时参考书目不起作用

    Problem 我正在尝试在 Shiny 应用程序中渲染 R Markdown 文档 我已经使用 David 在这篇文章中非常有用的解决方案成功实现了这一点 Shiny 应用程序中的 RMarkdown 但是 我无法使用 bib 文件中的引