R Shiny: fast reactive image display R Shiny: fast reactive image display r r

R Shiny: fast reactive image display


Hi you can use conditionalPanel to do this, it embed all your images but only the one which have TRUE to the condition will be displayed :

tabPanel("Live Images",      conditionalPanel(condition = "input.image_type == 'img_type1'",                      img(src = "img_type1.jpeg")     ),     conditionalPanel(condition = "input.image_type == 'img_type2'",                      img(src = "img_type2.jpeg")     ))

And change the name of your input from image.type to image_type because . have special meaning in Javascript (as between input and image_type).

If you have a lot of images, you can always do something like that :

tabPanel("Live Images",          lapply(X = seq_len(10), FUN = function(i) {           conditionalPanel(condition = paste0("input.image_type == 'img_type", i, "'"),                            img(src = paste0("img_type", i, ".jpeg"))           )         }))

For example, with images from this post by tsperry (you can find it on rbloggers too), you can do :

library("shiny")ui <- fluidPage(  tabsetPanel(    tabPanel("Live Images",          # 50 images to display         lapply(X = seq_len(50), FUN = function(i) {           # condition on the slider value           conditionalPanel(condition = paste0("input.slider == ", i),                            # images are on github                            img(src = paste0("https://raw.githubusercontent.com/pvictor/images/master/",                                             sprintf("%04d", i), "plot.png"))           )         }),         sliderInput(inputId = "slider", label = "Value", min = 1, max = 50, value = 1,                      animate = animationOptions(interval = 100, loop = TRUE))    )  ))server <- function(input, output) {}shinyApp(ui = ui, server = server)