html - 使用 Shiny 链接到 RMarkdown 上的本地 html 文件
问题描述
我有一个带闪亮的交互式 RMarkdown 文档(即runtime: shiny
在 YAML 标题中的行),在其中我想创建一个指向本地 html 文件的链接。但到目前为止我没有尝试过任何工作。
为了这个例子,假设我的工作目录中有以下文件:
- 工作目录/
- rmarkdown_with_shiny.Rmd
- 闪亮的应用程序.R
- 万维网/
- my_file.html
我想要做的是在rmarkdown_with_shiny.Rmd中创建一个链接,单击该链接会打开文件www/my_file.html。
文件rmarkdown_with_shiny.Rmd中的代码如下,包括我尝试过的所有内容,但到目前为止没有任何效果:
---
title: "Rmarkdown with shiny"
output: html_document
runtime: shiny
---
[link_1](www/my_file.html)
[link_2](my_file.html)
[link_3](file://www/my_file.html)
```{r shiny_links, echo=F, eval=T}
renderUI(tags$a("link_4", href="my_file.html", target="_blank"))
renderUI(tags$a("link_5", href="www/my_file.html", target="_blank"))
renderUI(tags$a("link_6", href="file://www/my_file.html", target="_blank"))
shinyAppFile("shiny_app.R")
```
最后一行shinyAppFile("shiny_app.R")
我可以嵌入一个包含工作链接的应用程序(当应用程序单独运行时),但一旦嵌入它就不再工作了。这是shiny_app.R里面的代码:
library('shiny')
ui <- fluidPage(
htmlOutput("link")
)
server <- function(input, output) {
output$link <- renderUI(tags$a("single_link", href="my_file.html", target="_blank"))
}
shinyApp(ui = ui, server = server)
令人困惑的部分是,[link_1](www/my_file.html)
如果它只是 rmarkdown 而没有闪亮,这条线会起作用。如果它只是一个闪亮的应用程序,这条线就可以工作renderUI(tags$a("single_link", href="my_file.html", target="_blank"))
。但是在runtime: shiny
没有这些工作的 rmarkdown 文件中。
如果有人能告诉我如何在 rmarkdown + 闪亮文件中链接本地 html 文件,我将不胜感激。特别是如果有办法使用闪亮的函数而不是降价语法来做到这一点。但是,任何一种解决方案都受到欢迎,只要它创建了一个有效的链接。
解决方案
基本上,当我们运行 Shiny 应用程序时,www
文件夹的内容是在内部嵌入的,我们不需要将www
文件夹包含到href
属性中。但是,如果我们想通过“公开”这些内容runtime: shiny
,我们需要添加shiny::addResourcePath()
函数并指定其文件夹:
---
title: "Rmarkdown with shiny"
output: html_document
runtime: shiny
---
```{r setup, include = FALSE}
library(knitr)
library(shiny)
library(here)
shiny::addResourcePath(prefix = "www", directoryPath = here::here("www"))
```
Relative File Path: [My HTML file](www/my_file.html)
Relative File Path: <a href = "www/my_file.html" target="_blank">My HTML file</a>
Absolute File Path: <a href = "http://www.shinyapps.io/" target="_blank">shinyapps.io</a>
Relative File Path:
```{r shiny-relative-links, echo = FALSE, eval = TRUE}
tags$a(href = "www/my_file.html",
tags$span(style = "color: #03a9f4", "My HTML file"),
target = "_blank")
```
Absolute File Path:
```{r shiny-absolute-links, echo = FALSE, eval = TRUE}
tags$a(href = "http://www.shinyapps.io/",
tags$span(style = "color: #03a9f4", "shinyapps.io"),
target = "_blank")
```
推荐阅读
- android - Android Studio 打开一个片段但不改变底部导航菜单状态
- java - 尝试使用文件输入从数组创建对象时我做错了什么
- tensorflow - 递归地分配给 TensorFlow 中的变量切片
- cmd - 这是获取正在执行批处理文件的文件夹的合法“技巧”吗?
- python - 将 Spark DataFrame 中的 NULL 值替换为 Dict 的键值
- java - 哈希图中的字数
- javascript - IndexedDB 为简单对象占用大量空间
- graphql - 如何在 Hasura graphql 中查询另一个查询的结果?
- magento2 - Magento 2.3 无法在数据库表中设置默认值 NULL
- python-3.x - pandas groupby 并转换为中位数给出 NaN