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"