在地图上绘制点 returns "object of type 'closure' is not subsettable"

Plotting points on map returns "object of type 'closure' is not subsettable"

我是 Shiny 的新手。我要绘制以下 test 数据:

      name     lat      long
1     AN-02M25 51.95509 -0.960327
2     AN-03M02 52.01291 -0.925606
3     AN-04M04 52.13251 -0.957313
4    AN-05268A 52.10275 -0.812983
5     AN-05M02 52.07297 -0.807966

我的代码如下:

ui <- fluidPage(
  actionButton("recalc", "New points"),
  mainPanel(
    tabsetPanel(
      tabPanel("Order Locations", leafletOutput("map",width="80%",height="400px")),
      tabPanel("Markers", verbatimTextOutput("markers"))
    )
  )
)

server <- function(input, output, session) {
  
  points <- reactive({data=test})
  
  output$map <- renderLeaflet({
    leaflet() %>%
      addTiles() %>%
      addMarkers(lng=points$long,lat=points$lat)
  })
  output$markers <- renderPrint({print(points)})
}

shinyApp(ui, server)

当我在 RStudio 中 运行 时,我得到:

Warning: Error in $: object of type 'closure' is not subsettable
  [No stack trace available]

我将 test 传递给 server 是否使用了错误的反应函数?

points 是一个 reactive。要访问它,您需要使用函数调用语法(因为它 本质上是一个函数):

output$map <- renderLeaflet({
  leaflet() %>%
    addTiles() %>%
    addMarkers(lng = points()$long, lat = points()$lat)
})
output$markers <- renderPrint({print(points())})

此外,你的反应初始化很奇怪:你正在创建第二个本地对象,data。那可能不是故意的。将 {data=test} 替换为 test:

points <- reactive(test)