Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 闪亮反应图失败-传单图_R_Shiny_Leaflet_Shiny Server - Fatal编程技术网

R 闪亮反应图失败-传单图

R 闪亮反应图失败-传单图,r,shiny,leaflet,shiny-server,R,Shiny,Leaflet,Shiny Server,我有一个如下的数据框 d <- data.frame(number = 1:4, date = c(1600, 1700, 1800, 1900), T_name = c("name1", "name2", "name3", "name4")) d您的示例中缺少一些输入变量,尤其是坐标(long/lat)、mname、web和casuality。在你的构建中,应用程序永远不会改变,因为反应值总是选择数据帧d,但它从不按名称

我有一个如下的数据框

d <- data.frame(number = 1:4, 
                date = c(1600, 1700, 1800, 1900),
                T_name = c("name1", "name2", "name3", "name4"))

d您的示例中缺少一些输入变量,尤其是坐标(long/lat)、mname、web和casuality。在你的构建中,应用程序永远不会改变,因为反应值总是选择数据帧d,但它从不按名称或年份过滤数据。所以你必须稍微调整一下你的反应功能。在这里,我按姓名或年份进行筛选。任何一个条件都必须为真

我对你的代码做了一点修改,所以至少它对其他人来说是可复制的,我将你的反应式代码移到了服务器功能中

d <- data.frame(number = 1:4, 
                date = c(1600, 1700, 1800, 1900),
                longitude = runif(4, 13,18),
                latitude = runif(4, 40, 55),
                web= rep("www.whatever.com", 4),
                T_name = c("name1", "name2", "name3", "name4"))


library(shiny)
library(leaflet)
ui <- {fluidPage("name_of_map", 
                sidebarLayout(
                  sidebarPanel(
                    selectInput(inputId = "input1", label = "Name of Filter" ,choices = 
                                  unique(d$T_name)),
                    selectizeInput(inputId = "year", label = "Year of Event", 
                                   choices = unique(d$date))
                  ),

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

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

  output$mymap <- renderLeaflet({ 
    req(input$input1)

    leaflet() %>% addTiles() %>%
      addProviderTiles(providers$Esri.NatGeoWorldMap) %>%
      addMarkers(lng=react()$longitude, lat=react()$latitude,
                 popup = paste("mname", "<br>", "Date:", react()$date,
                                "<br>", "Number of casualties:",
                                "casualties", "<a href=", react()$web, ">", main=input$input1)
                 )
  })
}

shinyApp(ui, server)

d感谢您对数据框进行了修改,我简化了数据框,但保留了一些变量。这非常有效,谢谢你。
 server <- function(input, output) {

  output$mymap <- renderLeaflet({ 
  leaflet(data = d[1:25,]) %>% addTiles() %>%
  addProviderTiles(providers$Esri.NatGeoWorldMap) %>%  
  addMarkers(lng=~longitude, lat=~latitude,
             popup = ~paste(mname, "<br>", "Date:", date, 
                            "<br>", "Number of casualties:", 
                           casualties,"<a href=",d$web,">",d$web, main=input$input1) 
  )
  })
}

reactive <- reactive({d})

shinyApp(ui, server)
d <- data.frame(number = 1:4, 
                date = c(1600, 1700, 1800, 1900),
                longitude = runif(4, 13,18),
                latitude = runif(4, 40, 55),
                web= rep("www.whatever.com", 4),
                T_name = c("name1", "name2", "name3", "name4"))


library(shiny)
library(leaflet)
ui <- {fluidPage("name_of_map", 
                sidebarLayout(
                  sidebarPanel(
                    selectInput(inputId = "input1", label = "Name of Filter" ,choices = 
                                  unique(d$T_name)),
                    selectizeInput(inputId = "year", label = "Year of Event", 
                                   choices = unique(d$date))
                  ),

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

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

  output$mymap <- renderLeaflet({ 
    req(input$input1)

    leaflet() %>% addTiles() %>%
      addProviderTiles(providers$Esri.NatGeoWorldMap) %>%
      addMarkers(lng=react()$longitude, lat=react()$latitude,
                 popup = paste("mname", "<br>", "Date:", react()$date,
                                "<br>", "Number of casualties:",
                                "casualties", "<a href=", react()$web, ">", main=input$input1)
                 )
  })
}

shinyApp(ui, server)