2017-04-05 108 views
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显示一个数据框。 (是的,我知道这是飞机数据,不是珊瑚数据,但我只希望它首先工作)。为什么动作按钮不起作用?为什么我的Shiny动作按钮不起作用?

+0

此代码是否真的为您运行?你似乎错过了'renderDataTable()'调用的右括号。你应该在那里得到一个语法错误。 – MrFlick

回答

0

您致电renderDataTable()但您从未指定应该去的地方。您需要在您的用户界面中使用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()功能

+0

非常感谢! – madhatter5

+0

是的,我遗漏了一个多余的位,因为它不会转移到这里,忘记括号。 – madhatter5