RShiny反应式应用程序错误

时间:2018-05-26 19:31:47

标签: r shiny leaflet r-leaflet

我的数据框如下:

d <- data_frame(number = 1:4, 
        date = c(1600, 1700, 1800, 1900),
        T_name = c("name1", "name2", "name3", "name4"),
        casualties= c(18, 89, 97, 34),
        m_name= c("name1", "name2", "name3", "name4"),
        longitude = c(87.7, 103.2, 67.0, 76.8),
        latitude = c(23.4, 78.3, 78.9, 34.9))

我正在尝试让我的地图对选择输入作出反应但是在运行代码时我收到以下错误消息:

Length of logical index vector must be 1 or 9 (the number of columns), not 25

我的实际数据中有9列,有25行,所以这确实有意义。我只是想不通如何修改我的代码。我想要的是一个按唯一T_name排序的下拉列表,当选择一个新的T_name时,地图只更新来自该T_name的数据。

UI

library(shiny)
library(leaflet)

ui <- {fluidPage("app title", 
         sidebarLayout(
           sidebarPanel(
             selectInput(inputId = "input1", label = "Name" ,choices = 
                           unique(d$T_name))

           ),

           mainPanel(
             leafletOutput("mymap"))
         )
)}

服务器

server <- function(input, output) {
  react <- reactive({
  req(input$input1)
df <- d[d$T_name == input$input1]
df
  })
output$mymap <- renderLeaflet({ req(input$input1)

leaflet() %>% addTiles() %>% setView(lng = -100.94, lat = 38.94 , zoom 
= 3.5) %>%
  addProviderTiles(providers$Esri.NatGeoWorldMap) %>%
  addMarkers(lng=react()$longitude, lat=react()$latitude,
             popup = paste(d$m_name)
  )
  })
}

运行应用

shinyApp(ui, server)

我已经玩了好几天了,所以非常感谢任何帮助!

0 个答案:

没有答案