我正在尝试制作执行以下任务的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)
答案 0 :(得分:1)
您可以使eventReactive()
依赖于多个输入:
my_data <- eventReactive(c(input$run_button, input$operation_button),...)