Ho un'applicazione per la visualizzazione di dati in tempo reale realizzata con la libreria R shiny
. I dati periodici vengono ricaricati dal file utilizzando la funzione reactivePoll
. Quello che non mi piace di questo è che ogni volta che i dati ricaricano l'intera applicazione si aggiorna.Aggiornare i dati nell'applicazione lucida senza aggiornare l'intera applicazione
Così per esempio se devo DT
uscita tavola con la selezione e utilizzo questa selezione input$table_rows_selected
reimposta a NULL
ogniqualvolta ricariche di dati che non è facile da usare affatto.
È possibile modificare l'output dei dati in generale senza interrompere l'utente?
AGGIORNAMENTO.
Questo può essere ottenuto con qualsiasi altro pacchetto per la visualizzazione di tabelle - googleVis
o altro?
Esempio di lavoro.
library(shiny)
library(DT)
runApp(shinyApp(
ui = fluidPage(dataTableOutput('table')),
server = function(input, output, session) {
pollData <- reactivePoll(4000, session,
checkFunc = function(){ Sys.time() },
valueFunc = function(){ data.frame(id = sample(letters[1:3]), a = runif(3), b = runif(3), c = runif(3)) })
output$table <- renderDataTable({pollData()})
proxy <- dataTableProxy('table')
observeEvent(pollData(), {
selectRows(proxy, input$table_rows_selected)
})}
))
Ho preso questo esempio da @NicE risposta e ha aggiunto colonna ID. Il punto è che la risposta @NicE è OK se è necessario selezionare una determinata riga quando tale riga è identificata dal numero di riga.
Ora supponiamo di aver bisogno di una riga da selezionare quando quella riga è identificata da qualche valore di identificazione. Cioè se seleziono una riga con id uguale b, la prossima volta che i dati si ricaricano voglio che la riga sia selezionata con lo stesso valore id.
Questo è molto comune con il pacchetto 'DT'. Dovrai creare alcuni 'JS 'personalizzati per prendertene cura. In alternativa puoi usare xtable perché il 'lampeggio 'non è così evidente. dai un'occhiata qui http://stackoverflow.com/questions/26976860/how-to-change-datatable-row-background-colour-based-on-the-condition-in-a-column –
I dati si ricaricano aggiungendo nuove linee o aggiornamento di valori già esistenti? Si potrebbe usare 'dataTableProxy' per cambiare la tabella senza ri-renderla. Se desideri semplicemente che il parametro table_rows_selected rimanga sulla nuova tabella, puoi anche impostarli in modo programmatico dopo aver aggiornato i dati. – NicE
Può essere una nuova tabella con poche righe modificate, ma il più delle volte sarà l'aggiornamento del valore. @NicE puoi spiegare cosa intendi per "impostarli programmaticamente"? –