2016-01-11 6 views
5

Il mio obiettivo è di rendere una funzione brillante reattiva in R. Esistono più uscite (ad esempio tabelle) che possono essere associate a una funzione simile. Tuttavia ho bisogno che la funzione reagisca su alcuni parametri, specifici per una tabella. Ecco alcuni esempi di codice semplice, che non sta funzionando ma rende la mia idea chiara - spero:Parametri di funzione reattiva

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

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

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

In tutte le tabelle (se non v'è più di uno) mi wan't di mostrare i dati con base diversa parametro (getData (x, y, foo)). Quindi la seconda tabella potrebbe usare "getData (x, y, bar)". Non voglio scrivere ogni volta la stessa funzione per un altro tavolo.

La soluzione sopra descritta non funziona, poiché le funzioni reattive non supportano i parametri.

Come lo risolveresti?

risposta

9

Questo dovrebbe funzionare, invece:

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

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

eventReactive solo gli aggiornamenti se gli argomenti esposti in cambio di fronte. In pratica, questo reattivo non si attiva se si modificano le variazioni input$StartDate o input$EndDate.

Se questo non è ciò che si desidera, le normali funzioni reattive dovrebbero funzionare. Cioè .:

getData <- reactive({ 

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

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

che attiverà se qualsiasi degli ingressi cambiano

+0

Oh .. grazie (dovuto modificare la mia risposta). – michaelsinner