我正在创建一个有2个输出datatableoutput
和plotoutput
的闪亮应用。我在数据框中有2个变量st
和et
,它们将被初始化为一个值,我需要向现有数据框添加新行,具有以下逻辑
1.新的st
值是et
的先前值
2.新的et
值是st - 1000
的先前值
3. st
和et
的新值应添加为我的数据框中的新行
每5秒钟一次
基于新添加的行,线图应该更新。
下面是我的ui.r和server.r代码,目前我可以根据逻辑创建st
和et
的新值但无法添加新行并绘制图表< / 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())
})
答案 0 :(得分:1)
您可以使用reactiveVal
和const 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()
。下面给出一个工作实例,希望这有帮助!
y