блестящая приборная панель старшей диаграммы реагирует на два входа, не работает - PullRequest
0 голосов
/ 11 сентября 2018

Недавно я добавил старшую диаграмму на свою блестящую панель инструментов, которая реагирует на нажатие определенных полигонов на карте листовки.

В зависимости от того, на каком полигоне щелкнули, данные для старшей диаграммы либо берутся из 1 кадра данных, либокомбинация из двух кадров данных.

Это работает.Тем не менее, у меня также есть кнопка «Сброс карты», которая сбрасывает многоугольники, которые были нажаты на карте.Я пытаюсь закодировать его, чтобы эта кнопка сброса также сбрасывала старшую диаграмму.

Однако все варианты, которые я пробовал до сих пор, приводят к пустой старшей диаграмме с самого начала, которая не меняется.

df1<- data.frame(location = c(3,4), "2013" = c(900, 100), "2014" = c(700, 600))
df2<- data.frame(location = c(1,2), "2013" = c(1400, 1500),
"2014" = c(1600, 1700), , location1 = c(3,4)))



click_shape <- eventReactive(input$map_shape_click, {

c <- input$map_shape_click$id
return(c)
})


data_for_chart <- reactive({

# if top level polygon, return data from that level
if(is.null(click_shape())) {return(df1[FALSE,])
}else if(click_shape() %in% df1){

c<- tolower(click_shape())
return(df1[df$location  == c,] %>% gather(key = "year", value = GHA_N, 2:3))

# if second level, return data from top + second level  
}else if(click_shape() %in% df2){
  c<- tolower(click_shape())
  d<- tolower(df2$location[df2$location == click_shape()])
  return(df1[df1$location == d,] %>% 
           rbind(df2[df2$location == c,]) %>% gather(key = "year", value = GHA_N, 2:3))

# if no appropriate data is found, don't plot 
}else{
  return(df1[FALSE,])
}

})

Я попытался добавить кнопку сброса к событию реагировать следующим образом:

click_shape <- eventReactive(c(input$map_shape_click,input$reset) {

   if(input$map_shape_click) {
 c <- input$map_shape_click$id
   return(c)
}else{
   return(NULL)
})

, думая, что функция data_for_chart отреагирует на это, не отображая данные.Тем не менее, он сохраняет бланк старшей диаграммы с момента запуска блестящего приложения!

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 20 сентября 2018

Я решил свой собственный вопрос:

, сначала добавив реактивное значение, которое содержит событие click_shape

value<- reactiveValues(click_shape = NULL)

, а затем добавив второе событие наблюдения, которое изменяет click_shape

observeEvent(input$reset, { 
value$click_shape <- NULL
})

рядом с исходным наблюдающим событием

observeEvent(input$map_shape_click, {

value$click_shape <- input$map_shape_click$id
})

таким образом, два события наблюдения могут изменить событие click_shape.

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