Я пытаюсь интегрировать 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, блестяще ...