Предыдущий вклад в Shiny - PullRequest
1 голос
/ 09 июля 2019

Как сохранить предыдущий ввод в Shiny?

Я хочу показать, как изменяются оценки в соответствии с пользовательским вводом.

Например, если пользователь изменяет ввод и оценка увеличивается, то в некоторыхПанель Я хочу напечатать, что оценки вышли.

Для этого я хочу получить последовательность ввода пользователя, такую ​​как

> c(2,4,5,6)
[1] 2 4 5 6

, где 2,4,5,6 - предыдущие входные данные, полученные sliderInput.То есть, во-первых, пользователь выбрал 2, второе выбранное число - 4, .. и т. Д.


Редактировать

Ответ @ GyD.

    library(shiny)
    # Define UI for application that draws a histogram
    ui <- fluidPage(

        # Application title
        titlePanel("Old Faithful Geyser Data"),

        # Sidebar with a slider input for number of bins 
        sidebarLayout(
            sidebarPanel(
                sliderInput("bins",
                            "Number of bins:",
                            min = 1,
                            max = 50,
                            value = 30)
            ),

            # Show a plot of the generated distribution
            mainPanel(
               verbatimTextOutput("print")
            )
        )
    )

    # print history of user input
    server <- function(input, output) {

        rv <- reactiveValues(prev_bins = NULL)
        observeEvent(input$bins, {
# If event occurs, then run the following append function
            rv$prev_bins <- c(rv$prev_bins, input$bins)
        })

        # Output
        output$print <- renderPrint({
            paste(rv$prev_bins, collapse = ",")
        })

        # output$print <- renderPrint({
        #    
        #     paste(s, input$bins,sep = ",")
        # })
    }

    # Run the application 
    shinyApp(ui = ui, server = server)

1 Ответ

1 голос
/ 09 июля 2019

Вы можете сохранить предыдущие и фактические значения внутри объекта reactiveValues:

rv$prev_bins инициализируется как NULL, затем при каждом изменении значения новое значение добавляется к вектору.

Чтобы сохранить все предыдущие и текущие значения вместо всех, используйте: rv$prev_bins <- c(tail(rv$prev_bins, 1), input$bins).

Код:

# Initialize reactive values
rv <- reactiveValues(prev_bins = NULL)

# Append new value to previous values when input$bins changes 
observeEvent(input$bins, {
  rv$prev_bins <- c(rv$prev_bins, input$bins)
})

# Output
output$print <- renderPrint({
  paste(rv$prev_bins, collapse = ",")
})

Выход:

Output

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...