我正在尝试创建一个闪亮的应用程序,我要求用户输入总营销预算。通过此输入,服务器代码将执行取决于此初始值的多个操作。
但是,我面临两个问题:
“操作”按钮不起作用。当我运行代码时,它会自动将输入的初始值设置为我放入 numericInput 中的“value”参数(3243452)。提交按钮最终只是装饰性的。代码示例如下:
ui <- fluidPage(
titlePanel("Calculadora"),
sidebarLayout(
sidebarPanel(
numericInput("total_budget", "Valor total do Investimento:", value = 3243452, min = 0),
actionButton("submit", "Otimizar")
),
mainPanel(
plotlyOutput("grafico_investimento_atual"),
tableOutput("table")
)
)
)
2.我希望我的程序在每次用户更改投资价值时运行。但是,由于 actionButton 不起作用,输入值的任何更改都已经导致代码再次运行(实际上,它甚至不等待用户给出完整的值,它会在任何简单的更改后运行)。我该如何解决这个问题?
观察:输入值仅用作常量以在服务器函数内部执行查询。这里的目标是了解如何更好地使用操作按钮(这在我构建 UI 的方式中毫无用处)
在服务器端,您的代码需要对操作按钮做出反应。这是一个如何实现这一点的简单示例:
library(shiny)
ui <- fluidPage(
ui <- fluidPage(
titlePanel("Calculadora"),
sidebarLayout(
sidebarPanel(
numericInput("total_budget", "Valor total do Investimento:", value = 3243452, min = 0),
actionButton("submit", "Otimizar")
),
mainPanel(
textOutput("test")
)
)
)
)
server <- function(input, output, session) {
output$test <- renderText(paste("User has selected a value of", input$total_budget)) |>
bindEvent(input$submit)
}
shinyApp(ui, server)
您可以看到,在选择操作按钮之前,文本不会呈现到主面板。