Проблема реактивности при использовании renderTmap в R / глянцевом - PullRequest
2 голосов
/ 08 января 2020

Я пытаюсь интегрировать tmap в блестящее приложение и при этом столкнулся с проблемой реактивности. Я получаю сообщение об ошибке, означающее, что функция renderTmap () не создает реактивную среду (в то время как функции renderXXX () класса "classi c").

Вот сообщение об ошибке, которое я получаю:

Ошибка в .getReactiveEnvironment () $ currentContext (): операция невозможна без активного реактивного контекста. (Вы пытались сделать что-то, что можно сделать только из реактивного выражения или наблюдателя.)

Поэтому мне не удалось создать карту с учетом входных значений ...

Вот простой пример того, что я пытаюсь сделать (что работает, только если я не обновляю data_map на основе входных значений!)

library(shiny)
library(sf)
library(tmap)

nc=st_read(system.file("shape/nc.shp", package="sf"))
# Define UI for application that draws a histogram
ui=fluidPage(
  selectInput("name",
              "name",
              unique(nc$NAME)),
  tmapOutput("map"))
)
server=function(input, output) {
  output$map <- renderTmap({
    data_map <- subset(nc,NAME==input$name)
    tm_shape(data_map)+
      tm_borders()
  })
}

shinyApp(ui=ui,server=server)

У кого-нибудь есть объяснение / обойти эту проблему?

PS: я действительно настроен на renderTmap, а не на renderLeaflet: я пытаюсь научить студентов, которые до сих пор работали с tmap, блестяще ...

...