更新Shiny中的复选框值

时间:2019-07-15 08:27:55

标签: r shiny

我正在尝试制作执行以下任务的Shiny应用程序:

1)上传这样的文件:

X   Y
1   3
2   1
3   6
4   4

2)默认情况下,按Run按钮将2添加到文件值;如果选中了一个框,则乘以2,

3)根据生成的值制作散点图。

我的问题是(i)我需要选中/取消选中该框,然后再次按Run按钮以显示相应的图,并且(ii)复选框每次都会回到on

当我在不按Run按钮的情况下选中/取消选中该框时,如何更新图? 我试图将observe()updateCheckboxInput()函数放置在eventReactive()块之外,但这根本不起作用。

我的代码:

library(shiny)
library(ggplot2)



ui <- fluidPage(
    fileInput(
        inputId = "input_file",
        label = "Choose an input file"
    ),
    actionButton(
        inputId = "run_button",
        label = "Run"
    ),
    checkboxInput(
        inputId = "operation_button",
        label = "multiply instead of summing",
        value = FALSE
    ),
    plotOutput(
        outputId = "my_plot"
    )
)


server <- function(input, output, session) {

    my_data <- eventReactive(
        input$run_button,
        {
            inFile <- input$input_file
            if(is.null(inFile)){
                return(NULL)
            }

            my_in <- read.table(inFile$datapath, header = T, sep = "\t")

            my_function <- function(input, operation){
                if(operation == "sum"){
                    input <- input + 2
                }else if(operation == "multiply"){
                    input <- input * 2
                }

                return(input)
            }

            button_switch <- ifelse(input$operation_button == FALSE, "sum", "multiply")

            observe(
                {
                    updateCheckboxInput(session, "operation_button", "multiply instead of summing", value = button_switch)
                }
            )

            my_in <- my_function(my_in, button_switch)

        }
    )



    output$my_plot <- renderPlot(
        {
        my_df <- my_data()

        ggplot(my_df, aes(x=X, y=Y)) + 
        geom_point()
        }
    )
}


shinyApp(ui = ui, server = server)

1 个答案:

答案 0 :(得分:1)

您可以使eventReactive()依赖于多个输入:

my_data <- eventReactive(c(input$run_button, input$operation_button),...)