这是一个玩具示例,其中我每秒绘制一个介于 1 和 10 之间的数字,并且我只想在刚刚绘制的实际数字与之前绘制的数字之间的差等于 1 时才显示这些数字。所以如果抽出的数字顺序为:[5,7,8,2,3]。我想连续显示[8,3]。我想这都是关于反应值和隔离功能的,但我无法意识到我想要什么。我在评论中的失败尝试。
library(shiny)
ui <- shinyUI(fluidPage(
mainPanel(
textOutput("time"),
textOutput("num")
)
))
server <- function(input, output, session) {
autoInvalidate <- reactiveTimer(1000)
timestamp<-reactive({
autoInvalidate()
Sys.time()
})
random_num<-reactive({
autoInvalidate()
sample(x=seq(1,10),size = 1,replace = FALSE,pro)
})
# My attempt : obviously do not work
# values <- reactiveValues(old=1)
# observe({
# if (random_num()==values$old) {values$display=random_num()}
# else {values$old=random_num()}
# })
output$time <- renderText({paste("time :",timestamp())})
output$num <- renderText({paste("num :",random_num())})
#My attempt : obviously do not work
# output$num <- renderText({paste("num :",isolate(values$display))})
}
shinyApp(ui, server)
我知道有一个看起来像我的问题,但它完全不同。