如果您想在普通闪亮的应用中添加图片,请致电
shiny::img(src = "imgName.png")
在您的ui函数中使用以下目录结构:
| shinyApp/
| ui.R
| server.R
| www/
| myImage.png
你如何在一个同样是r包的闪亮应用程序中复制它?我试图完全一样,但是使用以下目录结构,没有运气:
| packageName/
| R
| app.R # contains ui.R and server.R
| inst
| www
| imgName.png
对于它的价值,在我的情况下,软件包实际上捆绑了一个闪亮的模块,但我不认为这与此问题相关。
编辑:Minimal example使用this package演示我的问题。
答案 0 :(得分:2)
使用addResourcePath
添加一个目录,使其对Shiny Web服务器可见。
正如文件http://shiny.rstudio.com/reference/shiny/latest/addResourcePath.html
所述使用给定的路径前缀向Shiny的Web服务器添加静态资源目录。主要用于包装作者为其组件提供支持的JavaScript / CSS文件。
它应该允许您引用包中的任何文件。
答案 1 :(得分:1)
您有多个选项。最简单的方法是将png文件放在inst
文件夹中,然后使用system.file("imgName.png",package="yourPackage")
如果您将代码更改为shiny::img(src="www/imgName.png")
,您的方法应该可行,但我不确定。
答案 2 :(得分:0)
Divad Nojnarg的“ CaPO4 sim”中找到了一个有效的示例,如issue I raised中有关在闪亮的dashboardPlus用户描述中引用本地图标文件所述。
总而言之,引用本地图像文件的一种方法是在zzz.R
目录中添加R/
文件。
.onAttach <- function(libname, pkgname) {
shiny::addResourcePath('www',
system.file('www',
package = 'DailyMeasure'))
}
其中软件包名称为 DailyMeasure 。
图像文件位于inst/www/imgname.png
中。
像这样在Shiny的服务器部分中引用该文件...
output$user <- shinydashboardPlus::renderUser({
shinydashboardPlus::dashboardUser(
name = UserConfig()$Fullname[UserConfig()$AuthIdentity == Sys.info()[["user"]]],
src = 'www/imgname.png', # this depends on addResourcePath in zzz.R
subtitle = Sys.info()[["user"]], ... )})