我的数据框如下:
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)
我已经玩了好几天了,所以非常感谢任何帮助!