gpt4 book ai didi

r - 在 R shiny 和 leaflet 中过滤和选择点

转载 作者:行者123 更新时间:2023-12-04 16:47:50 25 4
gpt4 key购买 nike

我在 map 上有一堆点和一些相关数据。

首先,我想按属性过滤这些点。这工作正常,但最近当我运行应用程序并摆弄过滤器时,最终它停止删除以前过滤的点并只在顶部加载新过滤的点。在对过滤器进行大约 10 次调整后,就会出现这种情况。就好像 clearMarkers() 函数停止工作一样。过滤后的数据也将显示在响应式 data.table 中(该部分工作正常,示例中未包含它)。

其次,我想点击点来选择它们。来自所选点的数据稍后将进入一些图表。我绝对可以选择一个点,但我无法保留所有点击点的 react 变量。此外,如果再次单击,选定的点应该变为未选定状态。所选点将在 map 上突出显示(通过在其上添加更大更亮的标记)和 react 性 data.table 中,并且选择应在 map 中点击和表格中点击后更新。但这只是几步之遥。

这里是一些示例代码,它不起作用。

library(sp)
library(leaflet)
library(shiny)

data <- data.frame(x = c(10,20,30,10,40), y = c(20,20,10,30,30), z = c(1,2,3,4,5))
points <- SpatialPointsDataFrame(data[,1:2],data[3])

server <- function(input, output, session) {
filtered <- reactive({
z.in <- input$z
points[points@data$z > z.in,]
})
selected <- reactiveValues()
output$map <- renderLeaflet({leaflet()})
observe({ # This observer works, but it seems to stop working about about 10 tries
leafletProxy("map") %>%
clearMarkers() %>%
addCircleMarkers(data = filtered())
})
observe({ # This observer does not work, and the app won't run unless you comment it out
clicked <- unlist(input$map_marker_click[3:4])
if (is.na(clicked)) {selected <- clicked}
else if (clicked %in% selected) {selected <- selected[-clicked]}
else {selected <- append(selected, clicked)}
})
}

ui <- bootstrapPage(
tags$style(type = "text/css", "html, body {width:100%;height:100%}"),
leafletOutput("map", width = "100%", height = "100%"),
absolutePanel(top = 10,left = 10,
sliderInput("z", "z",0,6,0)
))

shinyApp(ui = ui, server = server)

最佳答案

串扰包解决了这个问题。

https://rstudio.github.io/crosstalk/

关于r - 在 R shiny 和 leaflet 中过滤和选择点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36802493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com