2016-08-24 68 views
1

我有一个actionBotton从数据集mtcars的前5列中随机选取一列并绘制它。R Shiny eventReactive actionBotton interaction

现在actionBotton可以完成它的工作,但是图表并不是在应用程序启动时排在第一位。

当Shiny应用程序启动时,有什么办法让它绘制出来。

library(shiny) 

server <- function(input, output) { 
    X = eventReactive(input$plot,{ 
    mtcars 
    }) 
    output$plot = renderPlot({ 
    i = sample(1:5,1) 
    plot(X()[,i],ylab=names(mtcars)[i]) 
    }) 
} 

ui <- fluidPage(
    actionButton("plot","randomly plot"), 
    plotOutput("plot") 

) 

shinyApp(ui = ui, server = server) 

回答

3

您可以添加条件是按钮没有被点击。需要注意的是键设置为一个计数器,所以如果它没有被点击的值为0

library(shiny) 

server <- function(input, output) { 
    X = eventReactive(input$plot,{ 
    mtcars 
    }) 
    output$plot = renderPlot({ 
    i = sample(1:5,1) 
    if(input$plot == 0){ 
     return(plot(mtcars[,i],ylab=names(mtcars)[i])) 
    } 
    plot(X()[,i],ylab=names(mtcars)[i]) 
    }) 
} 

ui <- fluidPage(
    actionButton("plot","randomly plot"), 
    plotOutput("plot") 

) 

shinyApp(ui = ui, server = server) 

enter image description here