Shiny 应用程序崩溃,传单 Shiny RStudio 出现问题

问题描述 投票:0回答:1

我正在构建闪亮的应用程序,使用传单来绘制带有标记和多边形的地图。

此时我有一张地图,其中有一些标记和一个多边形

这是我代码的一部分,有了这个我可以在传单地图中渲染一个多边形,但前提是

com <- mongo$find('{"id" : "Temuco"}')
有一个名称(特木科或圣地亚哥),如果我把
'{"id" : {"$in":["Temuco", "Santiago"]}}'
全部因此错误而崩溃:'选项' 必须是完整命名的列表,或者没有名称 (NULL)

    com <- mongo_comunas$find('{"nombre": {"$in":["Temuco", "Santiago", "etcetcetc"]}}')
    build_list <- split(com, com$id)
    build_list <- lapply(build_list, function(x){x["id"]<- NULL;x})
    build_list <- lapply(build_list, function(x){x["order"]<- NULL;x})
    build_list <- lapply(build_list, function(x){x["hole"]<- NULL;x})
    build_list <- lapply(build_list, function(x){x["piece"]<- NULL;x})
    build_list <- lapply(build_list, function(x){x["group"]<- NULL;x})
    ps <- lapply(build_list, Polygon)
    ps <- Polygons(ps, ID = 1)
    ps <- SpatialPolygons(list(ps), proj4string =CRS("+proj=longlat"))
  
  
  output$mymap <- renderLeaflet({
    leaflet(data = ps) %>% addTiles() %>% addPolygons())       
    
  })

仅使用

com <- mongo$find('{"id" : "Temuco"}')
(或其他ID)就可以了。我使用 ggplot 与该函数并一次渲染两个或三个或更多多边形,但传单全部崩溃。

存储在 mongo 中的数据如下:

        long      lat    order  hole piece   id      group
    1 -72.8012 -38.8337 914361 FALSE   1     Temuco Temuco.1
    .
    .
    .
  200 -72.5503 -38.7324 919738 FALSE   1     Santiago Santiago.1
r mongodb shiny r-leaflet
1个回答
0
投票

第一

你在用吗

mongo$find(...)

mongo_comunas$find(...)

因为mongo命令不能用来查询你的db。它用于建立与 mongodb 的连接。

你需要类似这样的东西:

mongoConnection <- mongo(collection = "test", db = "test", url = "mongodb://localhost",
  verbose = FALSE, options = ssl_options())

请参阅 ?mongo 寻求帮助。

然后您可以调用此连接进行查找、聚合等查询

com <- mongoConnection$find(...)

我猜测该连接是您分配给 mongo_comunas 的连接,但没有看到更多代码,我不确定。

第二个

您拉入的数据是否包含任何数组?如果是这样,您将需要使用 $unwind 命令来取消嵌套这些数组。

您可能还需要使用 jsonlite 包中的“flatten”来进一步将数据展平为非嵌套数据框。

© www.soinside.com 2019 - 2024. All rights reserved.