The www
文件夹应与以下目录位于同一目录中app.R
文件,如果您的应用程序被调用runApp("path/to/appfolder")
。仅当您运行时,您的工作目录才重要shinyApp(ui, server)
直接在控制台中。那是因为runApp
将您的工作目录暂时更改为您指向的应用程序文件夹。
如果你想使用图像的绝对路径,你可以使用addResourcePath https://shiny.rstudio.com/reference/shiny/1.0.2/addResourcePath.html like so
addResourcePath(prefix = 'pics', directoryPath = '~/pictures')
ui <- fluidPage(
tags$img(src = "pics/my_picture.jpg") ## use the prefix defined in
## addResourcePath
)
server <- function(...) { }
shinyApp(ui, server)
addResourcePath
还可以用于将 JavaScript 和 CSS 资源加载到您的应用程序中。
有关 runApp() 的更多信息
由于评论中出现了这一点,我想澄清一些有关行为的事情shiny::runApp()
。此函数的第一个参数可以是应用程序的路径或应用程序对象。例子
dummy_app <- shinyApp(getwd(), function(...) {})
runApp("path/to/appfolder") # path
runApp("path/to/app.R") # path
runApp(dummy_app) # app object
如果使用路径,runApp()
会将工作目录更改为应用程序目录(path/to/appfolder
or path/to
)直到应用程序完成。如果传递应用程序对象,则按原样使用当前工作目录。
如果应用程序对象被打印为
class(dummy_app)
#> [1] "shiny.appobj"
dummy_app
这将调用shiny:::print.shiny.appobj
其中引用了runApp(<appobj>)
同样,工作目录被保留。