本文介绍了闪亮中的上一次输入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在SHINY中保留以前的输入?

我想显示预估如何根据用户输入进行更改。

例如,如果用户更改输入且预估为up,则在某些面板中,我要打印该预估为up。

为此,我希望获得用户输入序列,如

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

其中2,4,5,6是由sliderInput获取的先前输入。也就是说,首先,用户选择2,第二个选择数字是4,依此类推。


编辑

以下是@gyd的ANSewer。

    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)

推荐答案

您可以将先前的值和实际值存储在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 = ",")
})

输出:

这篇关于闪亮中的上一次输入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-23 03:18