R语言 UseMethod中的错误:没有适用于应用于类“NULL”对象的“metaData”的方法

nue99wik  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(932)

我试图添加不同的图标到我试图显示的标记。我有不同的类别,如

category <- data() %>%
  dplyr::select(category) %>%
  distinct()

它看起来像这样

$ category: chr "Traffic" "Livelihood" "Waste" ....

我有一个变量的徽标选择不同的图标的类别

logos <- awesomeIconList(
  "Pothole" = makeAwesomeIcon(
    icon = "road",
    markerColor = "black"
  ),
  "Garbage Collection" = makeAwesomeIcon(
    icon = "trash",
    markerColor = "green"
  ),
  "Air Quality" = makeAwesomeIcon(
    icon = "cloud",
    markerColor = "blue"
  )
)

我在observe函数中编写了逻辑,我把它从主逻辑中分离出来,我不知道为什么它对我不起作用,当我不使用observe函数,也不使用leaflet代理时,它是起作用的,当我在renderLeaflet函数中使用它时,它是起作用的。
我不知道我能在这里做什么,从错误中我不太理解逻辑

observe({
    filtered_data <- bqdata() %>%
      dplyr::filter(
        if ("All" %in% input$category) {
          category != ""
        } else {
          category %in% input$category
        }
      )
    
    proxy <- leafletProxy("layer_data")
    if (input$cluster) {
      proxy %>% addAwesomeMarkers(
        lat = filtered_data$lat,
        icon = ~logos[category],
        lng = filtered_data$long,
        popup = paste0(
          "<b>Title: </b>", filtered_data$title, "<br>",
          "<b>Type: </b>", filtered_data$type, "<br>",
          "<b>Category: </b>", filtered_data$category, "<br>",
          "<b>Status: </b>", filtered_data$status, "<br>",
          "<b>Description: </b>", filtered_data$description, "<br>",
          "<b>Address: </b>", filtered_data$address, "<br>",
          "<b>City Name: </b>", filtered_data$city, "<br>",
          "<b>State Name: </b>", filtered_data$state, "<br>"
        ),
        clusterOptions = markerClusterOptions()
      )
    } else {
      proxy %>% clearMarkerClusters()
    }
  })
hpxqektj

hpxqektj1#

您引用了2个变量,但没有为addAwesomeMarkers函数定义数据以引用其中的变量(~表示法)。像addMarkers这样的散页函数有一个data.frame,它是用“data”参数定义的,或者是从前面的函数传递过来的。如果你用data.frame定义“data”,“filtered_data”,然后引用data.frame中的变量,使用“~”表示它们来自data. frame。

proxy %>% 
  addAwesomeMarkers(
    data = filtered_data
    lat = ~lat,
    lng = ~long,
    clusterOptions = markerClusterOptions()
  )

我在上面的评论中提到的问题是由于你引用logos的方式,使用你的符号应该是:

icon = logos[filtered_data$category]

或者,如果您像我上面提到的那样定义数据参数:

icon = logos[~category]

相关问题