gpt4 book ai didi

r - 如何在 Shiny 仪表板中以特定时间间隔将新行绑定(bind)到数据表?

转载 作者:行者123 更新时间:2023-12-04 14:23:32 25 4
gpt4 key购买 nike

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

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

用户界面

 library(shiny)

shinyUI(fluidPage(

titlePanel("Incremental Plots"),

sidebarLayout(
sidebarPanel(),

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

服务器.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())
})

最佳答案

您可以使用 reactiveVal 的组合并为此 observe。请注意,您可以使用 x() 调用名为 xreactiveVal 的值,并且可以将其值设置为 y 通过执行 x(y)。下面给出了一个工作示例,希望对您有所帮助!


enter image description here


library(shiny)

ui<- shinyUI(fluidPage(

titlePanel("Incremental Plots"),
sidebarLayout(
sidebarPanel(),
mainPanel(
tableOutput('var')
)
)
))

start_time <- 100000
end_time = start_time - 1000

server<- function(input,output,session){

# Initialize
reval_omega <- reactiveVal(data.frame(st = c(start_time),et = c(end_time)))
reval_start <- reactiveVal(start_time)
reval_end <- reactiveVal(end_time)

# update our reactiveVal
observe({
invalidateLater(1000, session) # every second
isolate({
reval_start(reval_end()) # set start time to current end time
reval_end(reval_start() - 1000) # set end time to start - 1000
omega_new <- data.frame(st = reval_start(),et = reval_end()) # create a new row for the dataframe
reval_omega(rbind(reval_omega(),omega_new)) # rbind the reval_omega() and the new row, and store result in reval_omega()
})
})
output$var <- renderTable(reval_omega())
}

shinyApp(ui,server)

关于r - 如何在 Shiny 仪表板中以特定时间间隔将新行绑定(bind)到数据表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50812251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com