我很难理解如何使用R shing中的addResourcePath((函数(https://shiny.rstudio.com/reference/shiny/latest/resourcePaths.html),尽管有这个明显的解决方案,但对于有类似问题的人来说,我应该如何使用addResourcePath?
我想引用一个包含几个javascript文件的文件夹,以便在我闪亮的应用程序中使用,但我不知道"前缀"应该是什么,也不知道如何获取"目录路径"。如何使用addResourcePath让R Shiny访问特定文件夹中的文件?
下面是一个简单的基本解释。
假设您要添加位于c:/javascript_files
中的文件myScript.js
。最简单的解决方案是将myScript.js
复制到应用程序所在的www
子目录中。应用程序的UI
可以使用前缀/
访问位于www
中的任何内容。
对于本例,要将脚本添加到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
(前端(。由于您不能使用像http://your_site/c:/javascript_files/myScript.js
这样的URL,因此需要创建一个";虚拟的";将本地目录映射到URL目录的子目录,这实际上是addResourcePath()
中的前缀参数。
在本例中,使用前缀jscode
。表达式:
addResourcePath("jscode", "c:/javascript_files")
将创建一个";虚拟的";在本地目录c:/javascript_files
的应用程序URL中使用的名为jscode
的目录。
表达式:
tags$head(tags$script(src="jscode/myScript.js")))
将被翻译成HTML作为
<script src="jscode/myScript.js"></script>
其将被浏览器解释为CCD_ 23。
如果你有一个像c:/javascript_files/code_a
这样的子目录,你不需要添加它,你可以用同样的方式引用它,比如:
<script src="jscode/code_a/myScript.js"></script>
添加myScript.js
文件的Shiny代码为:
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)