shiny
我有一个使用 R库构建实时数据可视化的应用程序。我使用reactivePoll
函数从文件中定期重新加载数据。我不喜欢的是,每当数据重新加载时,整个应用程序都会刷新。
因此,例如,如果我有DT
带有选择的表输出并且我使用此选择input$table_rows_selected
,它会在数据重新加载时重置,NULL
这根本不是用户友好的。
总体上是否可以在不中断用户的情况下更改数据输出?
更新。
这可以通过任何其他用于显示表格的包googleVis
或其他包来实现吗?
工作示例。
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)
})}
))
我从@NicE 答案中获取了这个示例并添加了 id 列。关键是@NicE 答案是可以的,如果在该行由行号标识时需要选择某行。
现在假设当该行由某个 id 值标识时,我需要选择该行。也就是说,如果我选择 id 等于 b 的行,那么下次重新加载数据时,我希望选择具有相同 id 值的行。