Как обновить приложение Shiny только при нажатии кнопки «Отправить»? - PullRequest
0 голосов
/ 29 марта 2020

Я хочу создать , которое обновляется только при нажатии кнопки отправки. Я много смотрел в Интернете, чтобы найти ответ на свой вопрос и нашел эту очень полезную веб-страницу: (https://shiny.rstudio.com/articles/action-buttons.html). Я понимаю код и могу воспроизвести его, но когда я использую ту же логику c со своим собственным кодом, кнопка обновления становится бесполезной и ничего не делает.

Вот мой код:

library(shiny)
library(leaflet)


ui <- fluidPage(

  checkboxGroupInput(
    inputId = "selected_dates",
    label = "Choose the year",
    choices = c("20","19","18","17","16","15"),
    selected = c("20","19","18","17","16","15")
  ),

  actionButton("go", "Update"),
  leafletOutput("map")

)

server <- function(input, output) {

  dates <- eventReactive(input$go, {
    input$years
  })

  output$map <- renderLeaflet({


    m <- addTiles(setView(leaflet(), lng = -73.731368, lat = 45.531368, zoom = 10))
    addCircles(m, data = vol_voiture[vol_voiture$Year %in% input$years,], lat = ~ LATITUDE, lng = ~ LONGITUDE, popup = ~ DATE, opacity = 0.5, weight = 0.1)

  })
}

shinyApp(ui, server)

Просто чтобы уточнить, vol_voiture - это мой . Я знаю, что это, вероятно, просто простая ошибка или недоразумение с моей стороны, но я работаю над этим уже много часов и, похоже, не могу найти решение. Большое спасибо за вашу помощь!

1 Ответ

0 голосов
/ 29 марта 2020

Вы не используете свою функцию eventReactive где-либо. Я бы попробовал просто заменить input$years в вызове renderLeaflet на dates()

library(shiny)
library(leaflet)


ui <- fluidPage(

  checkboxGroupInput(
    inputId = "selected_dates",
    label = "Choose the year",
    choices = c("20","19","18","17","16","15"),
    selected = c("20","19","18","17","16","15")
  ),

  actionButton("go", "Update"),
  leafletOutput("map")

)

server <- function(input, output) {

  dates <- eventReactive(input$go, {
    input$years
  })

  output$map <- renderLeaflet({

    m <- addTiles(setView(leaflet(), lng = -73.731368, lat = 45.531368, zoom = 10))
    addCircles(m, data = vol_voiture[vol_voiture$Year %in% dates(),], lat = ~ LATITUDE, lng = ~ LONGITUDE, popup = ~ DATE, opacity = 0.5, weight = 0.1)

  })
}

shinyApp(ui, server)

Надеюсь, это поможет !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...