gpt4 book ai didi

html - 使用 Shiny 链接到 RMarkdown 上的本地 html 文件

转载 作者:行者123 更新时间:2023-12-03 19:16:26 30 4
gpt4 key购买 nike

我有一个带有 Shiny 的交互式 RMarkdown 文档(即 YAML header 中的行 runtime: shiny),在其中我想创建一个指向本地 html 文件的链接。但到目前为止我没有尝试过任何工作。

为了这个例子,假设我的工作目录中有以下文件:

  • 工作目录/
  • rmarkdown_with_shiny.Rmd
  • Shiny_app.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)如果它只是没有 Shiny 的 rmarkdown 会起作用。如果它只是一个 Shiny 的应用程序,这条线会起作用 renderUI(tags$a("single_link", href="my_file.html", target="_blank")) .但是在带有 runtime: shiny 的 rmarkdown 文件中这些都不起作用。

    如果有人能告诉我如何在 rmarkdown + Shiny 文件中链接本地 html 文件,我将不胜感激。特别是如果有一种方法可以使用 Shiny 的函数而不是 Markdown 语法来做到这一点。但任何一种解决方案都受到欢迎,只要它创建了一个有效的链接。

    最佳答案

    基本上,当我们运行 Shiny 应用程序时 www 的内容文件夹是内部嵌入的,我们不需要包含 www文件夹到 href属性。
    但是,如果我们想通过 runtime: shiny“公开”这些内容我们需要添加 shiny::addResourcePath() function并指定其文件夹:

        ---
    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")
    ```

    here用于原始解决方案和讨论。另外, Ode to the here package .

    关于html - 使用 Shiny 链接到 RMarkdown 上的本地 html 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60326689/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com