我从加法和移除按钮之间的区别中学到了什么。
正如我们从下面的代码中看到的,主要的区别是添加和删除按钮如何影响场景行。REMOVE按钮有效地使用scenarios[-length(scenarios)]命令删除即时的最后一个场景,同时使其他代码与ADD按钮保持不变。
一种非常简单的单行代码解决方案,但解决问题的方法却很优雅。我又学到了很多东西。谢谢你们所有人。
observeEvent(input$add, {
if (!(shock %in% scenarios)) {
scenarios <<- sort(c(scenarios, shock))
updateCheckboxGroupInput(session, "scenarios",choices = scenarios,selected = scenarios)
}
observeEvent(input$remove,{
scenarios <<- scenarios[-length(scenarios)]
updateCheckboxGroupInput(session, "scenarios",choices = scenarios,selected = scenarios)
})发布于 2019-10-10 14:15:49
这应该可以做到:
library(shiny)
ui <- fluidPage(
numericInput("shock", "Shock", value = round(runif(1) * 1000), 0),
actionButton("add", "Add"),
actionButton("remove", "Remove"),
checkboxGroupInput("scenarios", "Scenarios", choices = c(), selected = c()),
verbatimTextOutput("o1")
)
scenarios <- c(-100, -50, 0, 50, 100)
server <- function(input, output, session) {
updateCheckboxGroupInput(session, "scenarios",
choices = scenarios,
selected = scenarios)
observeEvent(input$add,{
shock <- isolate(input$shock)
if (!(shock %in% scenarios)) {
scenarios <<- sort(c(scenarios, shock))
updateCheckboxGroupInput(session, "scenarios",choices = scenarios,selected = scenarios)
}
# put a new random value
updateNumericInput(session, "shock", value = round(runif(1) * 1000))
})
observeEvent(input$remove,{
scenarios <<- scenarios[-length(scenarios)]
updateCheckboxGroupInput(session, "scenarios",choices = scenarios,selected = scenarios)
})
output$o1 <- renderPrint({
x <- input$scenarios
str(x)
cat(paste0("length: ", length(x), "\n"))
cat(paste0(x, "\n"))
})
}
shinyApp(ui, server)

https://stackoverflow.com/questions/58324528
复制相似问题