gpt4 book ai didi

在浏览器中运行时,R Shiny 数据表图像不会更新

转载 作者:行者123 更新时间:2023-12-02 03:14:36 26 4
gpt4 key购买 nike

我正在创建一个 Shiny 的应用程序,它在数据表中显示图像和文本。该表需要根据用户的输入进行更新。当我在窗口中运行应用程序时,表格会按预期更新。但是,当我在浏览器中运行它时,文本会更新,但图像不会更新。如何使其在浏览器中运行?

编辑:为了清楚起见,下面的示例只是为了重现该问题。真正的应用程序可以显示任意数量的不同图片,这些图片在用户做出选择之前不会保存在本地(它们是从数据库中提取的)。我希望避免使用不同的文件名,因为我可能最终会在本地保存数十万张图片,但如果这是唯一的解决方案,那么我将不得不定期清理文件夹

可重现的示例(需要 2 个本地镜像)

library(shiny)
library(imager)
library(DT)

# Define UI
ui <- fluidPage(

# Application title
titlePanel("Tables to export"),

sidebarLayout(
sidebarPanel(
actionButton("pic1","Pic1"),
actionButton("pic2","Pic2")
),

# Show tables
mainPanel(
fluidRow(
dataTableOutput('tab1')
)
)
)
)

# Define server logic
server <- function(input, output) {

observeEvent(input$pic1, {
pic <- load.image("www/pic1.png")
save.image(pic,"www/picToShow.png")

tab1 <- datatable(t(data.frame("Pic"='<img src="picToShow.png" width=150 height=100>',x1=1,x2=2,x3=3,row.names="p1")),
escape = F, options = list(dom = 't',pageLength = 20))
output$tab1 <- renderDataTable(tab1)
})

observeEvent(input$pic2, {
pic <- load.image("www/pic2.png")
save.image(pic,"www/picToShow.png")

tab1 <- datatable(t(data.frame("Pic"='<img src="picToShow.png" width=150 height=100>',x1=4,x2=5,x3=6,row.names="p1")),
escape = F, options = list(dom = 't',pageLength = 20))
output$tab1 <- renderDataTable(tab1)
})

}

# Run the application
shinyApp(ui = ui, server = server)

预期行为(窗口中的行为)

Expected behaviour (behaviour in a window)

浏览器中的行为

Behaviour in browser

最佳答案

我同意@MrFlick的评论。为什么要加载这两个图像并使用相同的名称重新保存它们?浏览器会认为它已经知道该图像并将重新使用已加载的图像。

为什么不直接包含 pic1.pngpic2.png

server <- function(input, output) {
observeEvent(input$pic1, {
tab1 <- datatable(t(data.frame("Pic"='<img src="pic1.png" width=150 height=100>',x1=1,x2=2,x3=3,row.names="p1")),
escape = F, options = list(dom = 't',pageLength = 20))
output$tab1 <- renderDataTable(tab1)
})

observeEvent(input$pic2, {
tab1 <- datatable(t(data.frame("Pic"='<img src="pic2.png" width=150 height=100>',x1=4,x2=5,x3=6,row.names="p1")),
escape = F, options = list(dom = 't',pageLength = 20))
output$tab1 <- renderDataTable(tab1)
})
}

关于在浏览器中运行时,R Shiny 数据表图像不会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56545112/

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