在地图上绘制点 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)
我是 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)