如何在 R Shiny 中使用 addResourcepath() ?

Jam*_*mie 5 r path shiny shinyjs

我正在努力理解如何使用 R闪亮(https://shiny.rstudio.com/reference/shiny/latest/resourcePaths.html)中的 addResourcePath() 函数,尽管对于有类似问题的人来说这是一个明显的解决方案如何正确使用addResourcePath?

我想引用一个包含几个要在我的闪亮应用程序中使用的 javascript 文件的文件夹,但我不明白“前缀”应该是什么,也不明白如何获取“目录路径”。如何使用 addResourcePath 让 R Shiny 访问特定文件夹中的文件?

Geo*_*any 7

这是一个简单的基本解释。

假设您要添加myScript.js位于c:/javascript_files. 最简单的解决方案是复制myScript.jswww您的应用程序所在的子目录。您的应用程序可以使用前缀 来www访问位于 中的任何内容。UI/

对于此示例,将您的脚本添加到UI您可以使用

tags$head(tags$script(src="myScript.js")))

Shiny 生成的 HTML 代码将是

<script src="myScript.js"></script>

您的浏览器会将其解释为http://your_site/myScript.js. 这里的前缀只是/.

但如果您希望将 JS 代码保留在原始位置 ( c:/javascript_files),则需要使其可供UI应用程序的(前端)访问。由于您不能使用类似 的 URL http://your_site/c:/javascript_files/myScript.js,因此您需要创建一个“虚拟”子目录,将本地目录映射到 URL 目录,这实际上是 中的前缀参数addResourcePath()

对于此示例,让我们使用 as prefix jscode。表达方式:

addResourcePath("jscode", "c:/javascript_files")

将创建一个名为“虚拟”的目录,jscode用于本地目录的应用程序的 URL 中c:/javascript_files

表达方式:

tags$head(tags$script(src="jscode/myScript.js")))

将被转换为 HTML 为

<script src="jscode/myScript.js"></script>

这将被浏览器解释为http://your_site/jscode/myScript.js.

如果您有一个像 的子目录c:/javascript_files/code_a,则不需要添加它,您可以以相同的方式引用它,例如:

<script src="jscode/code_a/myScript.js"></script>

添加文件的闪亮代码myScript.js将是:

library(shiny)

addResourcePath("jscode", "c:/javascript_files")

ui <- fluidPage(
  tags$head(tags$script(src = "jscode/myScript.js"))  
)

server <- function(input, output, session) {
}

shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)

  • 您可以将前缀视为引用本地目录的别名。 (3认同)
  • 非常有帮助,您很好地解释了前缀。我用包里的资源材料折腾了好久,都没用。感谢您抽出宝贵的时间给我们这些新手耐心讲解 (3认同)
  • 感谢您非常详细的回复@Geovany。那么前缀实际上并不指任何特定的东西,而只是您提供的一个名称,稍后当您想从该位置提取文件时会引用它? (2认同)
  • 我很高兴知道这个解释很有用。 (2认同)