У меня есть интерактивный документ RMarkdown с блестящим (то есть со строкой runtime: shiny
в заголовке YAML) и внутри него я хотел бы создать ссылку на локальный файл html. Но ничего, что я пробовал, пока не работает.
Для примера скажем, у меня есть следующие файлы в моем рабочем каталоге:
- work_dir /
- rmarkdown_with_shiny.Rmd
- блестящий_app.R
- www /
Я хочу создать внутри 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")
я могу вставить приложение, которое содержит рабочую ссылку (когда приложение запускается отдельно), но как только оно встроено, оно больше не работает. Это код внутри iny_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"))
. Но в файле rmarkdown с runtime: shiny
ни одна из этих функций не работает.
Я был бы очень признателен, если бы кто-нибудь подскажет мне, как связать локальные файлы html в rmarkdown + блестящие файлы. Особенно, если есть способ сделать это, используя блестящие функции, а не синтаксис уценки. Но любое решение приветствуется, если оно создает работающую связь.