1
library(shiny)
library(leaflet)
library(nycflights13)
library(DT)

parguera <- nycflights13::flights

r_colors <- rgb(t(col2rgb(colors()) / 255))
names(r_colors) <- colors()

ui <- fluidPage(
titlePanel("NOAA Caribbean Coral Data"),
leafletOutput("mymap"),
p(),
actionButton("laparguera", "La Parguera Data"),
actionButton("mona", "Mona Island Data"),
actionButton("isla", "Isla Catalina Data")
)

server <- function(input, output, session) {

output$mymap <- renderLeaflet({
leaflet() %>%
  addTiles() %>%
  addMarkers(lat = 17.95, lng = - 67.05, popup = "La Parguera ") %>%
  addMarkers(lat = 18.00, lng = -67.50, popup = "Mona Island") %>%
  addMarkers(lat = 18.2, lng = -69.00, popup = "Isla Catalina")
})
observeEvent(input$laparguera, {
DT::renderDataTable(DT::datatable(parguera)
 })
 }

shinyApp(ui, server)

以上是我的代码,试图让操作按钮 laparguera 显示数据框。(是的,我知道这是平面数据,而不是珊瑚数据,但我只想让它先工作)。为什么操作按钮不起作用?

4

1 回答 1

0

你打电话renderDataTable(),但你从​​来没有指定它应该去哪里。你的 UI 中需要一个dataTableOutput()对象。就像是

ui <- fluidPage(
  titlePanel("NOAA Caribbean Coral Data"),
  leafletOutput("mymap"),
  p(),
  actionButton("laparguera", "La Parguera Data"),
  actionButton("mona", "Mona Island Data"),
  actionButton("isla", "Isla Catalina Data"),
  DT::dataTableOutput('tbl')
)

那么你应该有

observeEvent(input$laparguera, {
    output$tbl <- DT::renderDataTable(DT::datatable(parguera))
})

在你的server()功能中。

于 2017-04-05T21:04:03.537 回答