【问题标题】:Shiny: Render dynamic number of images from destinationShiny:从目的地渲染动态数量的图像
【发布时间】:2023-03-03 09:31:18
【问题描述】:

我需要从目的地渲染动态数量的图像。但作为通过循环的结果,我只渲染了来自目的地的最后一张图像。但所有图像都必须不同。

我的解决方案灵感来自 stackoverflow 的这些答案

Shiny: Dynamic Number of Output Elements/Plots

dynamically add plots to web page using shiny

library(shiny)

# get all files from destination
images <- list.files("charts")
image_names <- str_replace_all(images, ".png", "")


server <- shinyServer(function(input, output) {


  output$images <- renderUI({

    image_output_list <- 
      lapply(1:length(image_names),
             function(i)
             {
               imagename = paste0(image_names[i], "_image")
               imageOutput(imagename)             

             })

    do.call(tagList, image_output_list)
  })

  observe({
    # if(is.null(input$files)) return(NULL)
    for (i in 1:length(image_names))
    {
      print(i)
      local({
        imagename <- paste0(image_names[i], "_image")
        print(imagename)
        output[[imagename]] <- 
          renderImage({
            list(src = normalizePath(paste0('charts/', image_names[i], '.png')))
          }, deleteFile = FALSE)
      })
    }
  })

})

ui <- shinyUI(fluidPage(
  titlePanel("Sidebar"),
  sidebarLayout(
    sidebarPanel(),
    mainPanel(
      uiOutput('images')
    )
  )
))

shinyApp(ui=ui,server=server)

【问题讨论】:

    标签: r shiny rstudio


    【解决方案1】:

    你可以试试这个:

      observe({
        for (i in 1:length(image_names))
        {
          local({
            ii <- i
            imagename <- paste0(image_names[ii], "_image")
            print(imagename)
            output[[imagename]] <- 
              renderImage({
                list(src = normalizePath(paste0('charts/', image_names[ii], '.png')))
              }, deleteFile = FALSE)
          })
        }
      })
    

    【讨论】:

    • 它有效。但是现在我不明白为什么需要另外分配ii &lt;- i
    猜你喜欢
    • 2020-04-04
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    • 2020-06-19
    • 2018-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多