闪亮-在Ui.R中检测输入的更改并发出警告
我有一个应用程序,有很多输入,它使用一个闪亮-在Ui.R中检测输入的更改并发出警告,r,shiny,R,Shiny,我有一个应用程序,有很多输入,它使用一个actionButton()来做一些计算,需要花费大量的时间,包括读取一些文件和绘制地图 在一些用户测试期间,一些反馈认为调整输入后需要重新按下actionButton(),这是不直观的。我想显示一条警告消息(阅读“帮助提醒”),用户需要重新按下actionButton()。我希望此消息仅在上次按下actionButton()后更改输入后才显示 到目前为止,我尝试在“eventReactive()”中使用全局变量,并尝试使用idential(),但运气不佳
actionButton()
来做一些计算,需要花费大量的时间,包括读取一些文件和绘制地图
在一些用户测试期间,一些反馈认为调整输入后需要重新按下actionButton()
,这是不直观的。我想显示一条警告消息(阅读“帮助提醒”),用户需要重新按下actionButton()
。我希望此消息仅在上次按下actionButton()
后更改输入后才显示
到目前为止,我尝试在“eventReactive()”中使用全局变量,并尝试使用idential()
,但运气不佳
我的问题是:如果自上次按下按钮以来,任何输入都发生了更改,我如何提供有用的提示以重新按下actionButton()
下面是一个应用程序的最小示例,它有许多输入,需要一些时间才能输出某些内容
## app.R ##
library(shiny)
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(
#arbritray inputs
sliderInput("in1", label = "Input 1", value=1,min=0,max=5),
sliderInput("in2", label = "Input 2", value=2,min=0,max=5),
sliderInput("in3", label = "Input 3", value=3,min=0,max=5),
actionButton("StartCalculation","Calculate")
),
dashboardBody(
textOutput("answer")
)
)
server <- function(input, output) {
out <- eventReactive(input$StartCalculation,{
Sys.sleep(2) #simulate long computation
input$in1+input$in2+input$in3
})
output$answer <- renderText({
out()
})
}
shinyApp(ui, server)
##app.R##
图书馆(闪亮)
图书馆(shinydashboard)
ui您可以在服务器内部使用reactiveVal
保存“状态”(已更改或未更改)。只要确保只要按下按钮或输入改变,状态就会更新
library(shiny)
library(shinydashboard)
ui <- fluidPage(
inputPanel(
#arbritray inputs
sliderInput("in1", label = "Input 1", value=1,min=0,max=5),
sliderInput("in2", label = "Input 2", value=2,min=0,max=5),
sliderInput("in3", label = "Input 3", value=3,min=0,max=5),
actionButton("StartCalculation","Calculate")
),
textOutput("answer"),
textOutput("status")
)
server <- function(input, output) {
status <- reactiveVal()
out <- eventReactive(input$StartCalculation,{
status("up to date")
Sys.sleep(2) #simulate long computation
input$in1+input$in2+input$in3
})
observeEvent({list(input$in1,input$in2,input$in3)},
{status("Needs recalculation")})
output$answer <- renderText({out()})
output$status <- renderText({status()})
}
shinyApp(ui, server)
库(闪亮)
图书馆(shinydashboard)
ui尝试这个完美的,非常好的解决方案!(很抱歉延迟回复)