简体   繁体   中英

SelectInput and if loop plot R Shiny

I know this is a basic question, but I'm really new at Shiny...

How can I combine plotlyOutput with an if loop from a SelectInput box?

I mean something like this:

vars <- data.frame(location = c("AP LIGUA",
                            "ESCUELA CHALACO"),
               lat = c(-32.45,
                       -32.183333),
               lon = c(-71.216667,
                       -70.802222)
)

selectInput(inputId = "myLocations", label = "Estación",
                                              choices = vars$location),
if (vars$location=="AP LIGUA") {
                                plotlyOutput("apligua", height = "100%")
                                fluidRow(
                                  DT::dataTableOutput("table")
                                )
                              }

But it does not work.

I suppose you truncated your code? It doesn't look very much like a shiny app. This is what a shiny app should look like.

vars <- data.frame(location = c("AP LIGUA",
                            "ESCUELA CHALACO"),
               lat = c(-32.45,
                       -32.183333),
               lon = c(-71.216667,
                       -70.802222)
)

ui <- fluidPage(
  selectInput(inputId = "myLocations", label = "Estación",
                                              choices = vars$location),
  plotlyOutput("apligua", height = "100%"),
  dataTableOutput("table")
)

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

  output$apligua <- renderPlotly({
    if(is.null(input$myLocations)) return() #react to the user's choice if there's one

    plot_ly(...)
  })

  output$table <- renderDataTable({
    if(is.null(input$myLocations)) return() #same thing, react to the user's choice

    data.table(...)
  })
}

shinyApp(ui, server)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM