Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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
checkboxGroupInput后的反应式映射_R_Shiny_Leaflet - Fatal编程技术网

checkboxGroupInput后的反应式映射

checkboxGroupInput后的反应式映射,r,shiny,leaflet,R,Shiny,Leaflet,我是新来的闪亮和传单,我会感谢任何指点。下面的代码试图在底图上映射点。它起作用,但不起反应。 这些点来自一个数据框(从CSV导入),我可以映射它。然而,在应用程序的顶部,我创建了一个复选框,让用户选择功能。其思想是,选择将决定向前传递哪些行,从而映射哪些点。这是我正在努力的一步。在代码中,我现在从数据帧传递可能点的完整列表,而不是从过滤输出(复选框输入)传递。如何传递过滤过程的结果 我的方法是用坐标抓取cols,用cbind()创建一个数据帧,并将其传递给点;但也许可以直接从过滤数据中传递相关C

我是新来的闪亮和传单,我会感谢任何指点。下面的代码试图在底图上映射点。它起作用,但不起反应。
这些点来自一个数据框(从CSV导入),我可以映射它。然而,在应用程序的顶部,我创建了一个复选框,让用户选择功能。其思想是,选择将决定向前传递哪些行,从而映射哪些点。这是我正在努力的一步。在代码中,我现在从数据帧传递可能点的完整列表,而不是从过滤输出(复选框输入)传递。如何传递过滤过程的结果

我的方法是用坐标抓取cols,用
cbind()
创建一个数据帧,并将其传递给
;但也许可以直接从过滤数据中传递相关COL。多谢各位

library(shiny)
library(leaflet)
library(dplyr)


parks <- read.csv("data.csv")

r_colors <- rgb(t(col2rgb(colors()) / 255))
names(r_colors) <- colors()

ui <- fluidPage(
  # First row for selectInputs
  fluidRow(
    column(4,
           checkboxGroupInput(inputId = "d_Governorate",
                              label = "Governorate:",
                              choices = c("All",
                                          unique(as.character(parks$Governorate))),
                              selected = "All"
                              )
    ),

    leafletOutput("d_map")
  )
)



server <- function(input, output, session) {

  points <- reactive({
    validate(
      need(input$d_Governorate != "", 'Please choose at least one feature.')
    )
    temp <- select(parks, lon, lat)
    if (input$d_Governorate != "All") {
      temp <- filter(parks, Governorate %in% input$d_Governorate) %>% 
        select(lon, lat)
    }
    temp
  }),

  output$d_map <- renderLeaflet({
    leaflet() %>%
      addProviderTiles("Stamen.TonerLite",
                       options = providerTileOptions(noWrap = TRUE)
      ) %>%
      addMarkers(data = points())
  })
}

shinyApp(ui, server)
库(闪亮)
图书馆(单张)
图书馆(dplyr)

parks我将使用以下代码更改定义点反应变量的部分(代码使用dplyr包):


转到checkboxGroupInput定义。

谢谢@Valter。我按照你的建议添加了代码。有效的方法是在每次用户输入时刷新。但它总是映射所有点。换句话说,过滤不起作用。我尝试将temp传递给points:
points@jpinelo我已经检查了代码,对我来说它看起来很好。我已经在这里部署了应用程序:查看地图下方的表格,看看地图上标记了哪些点。
        points <- reactive({
            validate(
                    need(input$d_Governorate != "", 'Please choose at least one feature.')
            )
            temp <- select(parks, lon, lat)
            if (input$d_Governorate != "All") {
                    temp <- filter(parks, Governorate %in% input$d_Governorate) %>% 
                            select(lon, lat)
            }
            temp
    })
selected = "All"