2016-01-11 17 views
5

Mein Ziel ist es, eine reaktive glänzende Funktion in R zu erstellen. Es gibt mehrere Ausgaben (z. B. Tabellen), die an eine ähnliche Funktion gebunden werden können. Allerdings muss die Funktion auf einige Parameter reagieren, die für eine Tabelle spezifisch sind. Hier finden Sie einigen einfachen Beispielcode, der nicht funktioniert, aber es macht meine Idee klar - ich hoffe:Reaktive Funktionsparameter

output$tableOne <- DT::renderDataTable({ 
    getData(foo) 
}) 

getData <- reactive(function(funParameter){ 
    corrStartDate <- input$StartDate 
    corrEndDate <- input$EndDate 

    return(someData(corrStartDate, corrEndDate, funParameter)) 
}) 

In allen Tabellen (wenn es mehr als eine gibt) I wan't Daten mit verschiedener Basis zeigen Parameter (getData (x, y, foo)). Die zweite Tabelle könnte also "getData (x, y, bar)" verwenden. Ich möchte nicht jedes Mal die gleiche Funktion für einen anderen Tisch schreiben.

Die obige Lösung funktioniert nicht, da reaktive Funktionen keine Parameter unterstützen.

Wie würden Sie das lösen?

Antwort

9

Dies sollte stattdessen arbeiten:

getData <- eventReactive(input$funParameter, { 
    corrStartDate <- input$StartDate 
    corrEndDate <- input$EndDate 

    return(someData(corrStartDate, corrEndDate, input$funParameter)) 
}) 

eventReactive nur Updates, wenn Argumente Frontwechsel angegeben werden. Praktisch wird dieser reaktive Trigger nicht ausgelöst, wenn sich input$StartDate oder input$EndDate ändert.

Wenn dies nicht das ist, was Sie wollen, sollten normale reaktive Funktionen funktionieren. D.h .:

getData <- reactive({ 

    funParameter <- input$funParameter 
    corrStartDate <- input$StartDate 
    corrEndDate <- input$EndDate 

    return(someData(corrStartDate, corrEndDate, funParameter)) 
}) 

, die ausgelöst wird, wenn jede der Eingänge

+0

ändern Oh .. Dank (hatte meine Antwort zu bearbeiten). – michaelsinner