实现一个简单的计数器来计算闪亮

时间:2016-03-25 23:24:42

标签: r shiny

我想跟踪用户刷新我的Shiny vis的次数。

我想我只会在反应区域之外设置一个计数器

number <- 0

并在每次反应块中的代码触发时添加一个更新。

但它不起作用。

思路:

使计数器成为全局var?
愚蠢的想法,不起作用    number <- 0放入反应区域?
的    当然这不是解决方案

我不确定要去哪个方向。有人有什么想法吗?

require(shiny)
number <- 0
runApp(list(ui = pageWithSidebar(
  headerPanel("This is a test"),
  sidebarPanel(
    helpText("This is a test"),

    sliderInput("range",
                label = "Pick a number:",
                min = 0, max = 100, value = 0)
  ),
  mainPanel(textOutput("text1"),
            htmlOutput("text")
  )
),
server = function(input, output) {
  number <- number + 1
  output$text <- renderUI({
    str <- paste("You have chosen:",
                 input$range)
    HTML(paste(str, sep = '<br/>'))
  View(number)
  })
}
)
)

1 个答案:

答案 0 :(得分:4)

Shiny有reactiveValues就像环境一样 - 它们通过引用传递,因此您可以使用反应式表达式中的常规赋值运算符为它们赋值。例如,

library(shiny)
ui <- pageWithSidebar(
  headerPanel("This is a test"),
  sidebarPanel(sliderInput("range", "Pick", 0, 100, 10)),
  mainPanel(htmlOutput("text"))
)

server <- function(session, input, output) {
  vals <- reactiveValues(count = -1)
  observeEvent(input$range, vals$count <- vals$count + 1)

  output$text <- renderUI({
    HTML(paste(sprintf("You have chosen: %s</br>", vals$count)))
  })
}

shinyApp(ui, server)

旁注:您也可以使用<<-作为全局变量进行操作,但我会说这是一个坏主意,因为<<-在环境中向后搜索,我认为它可能会有惊人的结果。