2017-10-02 3 views
2

Ich möchte eine Ausgabedatentabelle nach Auswahl einiger einfacher Kriterien, nachdem eine Aktionstaste geklickt wurde.r Glänzende Aktionsschaltfläche und Datentabellenausgabe

Der Code funktioniert ohne die Aktionsschaltfläche als Eingabe. Sobald ich die Funktion observeEvent einfüge, wird das Ergebnis nicht mehr generiert. Siehe Beispielcode unten.

Hinweis: Durch Entfernen der Zeile observeEvent(input$gobutton,{ und der entsprechenden }) wird die korrekte Ausgabe erzeugt.

library(shiny) 

ui <- fluidPage(
    fluidRow(column(6,div(checkboxGroupInput("test1", "Testing buttons", 
              choices=c("A","B","C"), 
              selected=c("A","B","C"))))), 

    hr(), 

    actionButton("gobutton","Start"), 

    dataTableOutput("summary_table") 

) 

server <- function(input,output){ 

    output$summary_table <- renderDataTable({ 

    observeEvent(input$gobutton,{ 

    df=data.frame(col1=input$test1,col2=seq(1,length(input$test1),1)) 

    df 
    }) 
    }) 
} 

shinyApp(ui=ui, server=server) 

Antwort

3

es stattdessen in einer eventReactive Wrap:

library(shiny) 

ui <- fluidPage(
    fluidRow(column(6,div(checkboxGroupInput("test1", "Testing buttons", 
              choices=c("A","B","C"), 
              selected=c("A","B","C"))))), 

    hr(), 
    actionButton("gobutton","Start"), 
    dataTableOutput("summary_table") 

) 

server <- function(input,output){ 

    data <- eventReactive(input$gobutton,{ 
    if(is.null(input$test1)){ 
     return() 
    } 

    df <- data.frame(col1=input$test1,col2=seq(1,length(input$test1),1)) 
    df 
    }) 

    output$summary_table <- renderDataTable({ 
    data() 
    }) 
} 

shinyApp(ui=ui, server=server) 
+0

perfekt funktioniert. Vielen Dank. Haben Sie eine Idee, warum 'observeEvent' nicht funktioniert, aber' eventReactive'? – sym246

+2

Ein Beobachter ist wie ein reaktiver Ausdruck insofern, als er reaktive Werte lesen und reaktive Ausdrücke aufrufen kann und automatisch erneut ausgeführt wird, wenn sich diese Abhängigkeiten ändern. Im Gegensatz zu reaktiven Ausdrücken führt dies jedoch nicht zu einem Ergebnis und kann nicht als Eingabe für andere reaktive Ausdrücke verwendet werden. Daher sind Beobachter nur nützlich für ihre Nebenwirkungen (z. B. beim Ausführen von E/A). https://shiny.rstudio.com/reference/shiny/latest/observe.html –

Verwandte Themen