如何在Shiny仪表板中以特定时间间隔将新行转换为数据表?

时间:2018-06-12 08:10:15

标签: r shiny

我正在创建一个有2个输出datatableoutputplotoutput的闪亮应用。我在数据框中有2个变量stet,它们将被初始化为一个值,我需要向现有数据框添加新行,具有以下逻辑
    1.新的st值是et的先前值     2.新的et值是st - 1000的先前值     3. stet的新值应添加为我的数据框中的新行        每5秒钟一次  基于新添加的行,线图应该更新。

下面是我的ui.r和server.r代码,目前我可以根据逻辑创建stet的新值但无法添加新行并绘制图表< / p>

Ui.r

 library(shiny)

shinyUI(fluidPage(

 titlePanel("Incremental Plots"),

 sidebarLayout(
   sidebarPanel(),

   mainPanel(
      tableOutput('var')
    )
  )
))

Server.r

library(shiny)
start_time <- 100000
end_time <- start_time - 1000
shinyServer(function(input,output,session){
   omega <- reactive({
    invalidateLater(1000, session)

   #dataf <<- data.frame(st = c(start_time),et = c(end_time))
   return(dataf)
   })

  # update non reactive value
   observe({
    omega()
    start_time <<- end_time
    end_time <<- start_time - 1000
    dataf <<- data.frame(st = start_time,et = end_time)


  })

  output$var <- renderTable(omega())
})

1 个答案:

答案 0 :(得分:1)

您可以使用reactiveValconst propertyBag = { ...addProperties(["firstProperty", "secondProperty"]) }; export default { propertyBag, someMethod(this: typeof propertyBag) { return this.firstProperty; } }; // Assumed definition function addProperties<T extends string>(a: T[]) : { [P in T]: any} { return null as any; } 的组合。请注意,您可以使用observe调用名为reactiveVal的{​​{1}}的值,并可以通过执行x将其值设置为x()。下面给出一个工作实例,希望这有帮助!

enter image description here

y