2016-03-25 6 views
2

Ich möchte auf dem Laufenden bleiben, wie oft der Benutzer mein Shiny vis aktualisiert hat.Implementieren Sie einen einfachen Zähler zum Zählen reaktiver Feuern in Shiny

ich dachte, ich würde nur außerhalb des reaktiven Bereich

number <- 0

und haben es durch Hinzufügen eines jedesmal, wenn der Code in reaktiven Block Brände aktualisieren einen Zähler nach oben gesetzt.

Aber es funktioniert nicht.

Ideen:

der Zähler ein global var machen?
dumme Idee, funktioniert nicht
setzen Sie die number <- 0 in den reaktiven Bereich?
von natürlich nicht die Lösung des

Ich bin nicht sicher, welche Richtung hier zu gehen. Hat jemand Ideen?

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) 
    }) 
} 
) 
) 

Antwort

4

Shiny hat reactiveValues, die wie eine Umgebung sind - sie als Referenz übergeben, so dass Sie, um sie mit dem regulären Zuweisungsoperator aus reaktiven Ausdrücke zuweisen können. Zum Beispiel

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) 

Nebenbei bemerkt: Sie konnte es auch als globale Variable wie <<- erwähnt, aber ich würde sagen, es wegen der, wie <<- sucht rückwärts durch Umgebungen eine schlechte Idee ist, und ich denke, es könnte haben überraschende Ergebnisse.

+0

was meinst du mit 'rückwärts suchen'? –

+0

@MonicaHeddneck "aufwärts" ist wahrscheinlich bessere Beschreibung, aber es sucht nacheinander durch Elternumgebungen, und wenn es das Symbol nicht findet, weist es es in der letzten Umgebung zu. Wie Sie sich vorstellen können, wird es in der Regel vermieden. – jenesaisquoi

+1

Nur eine Erwiderung für die Verwendung von reactiveValues ​​und das Aussprechen einer anderen Meinung, die sagt, << - nicht verwenden –

Verwandte Themen