如何在 r shiny 中为 updatedInputs 添加书签
How to bookmark updatedInputs in r shiny
我有一个包含很多 updateNumericInputs
的应用程序,我希望能够为它们的状态添加书签。我把 reprex 做得非常小,但我仍然可以指出这个问题。我正在阅读有关书签的内容 - 我真的很困惑,我怀疑我需要更多代码行,尽管从我所附的图片看来我可能只差一个逗号。我一直在试验,尝试采用教程、文章、SO 答案中的代码,但我无法让它发挥作用。我将非常感谢解决方案和有关它的讲座。
非常感谢您的宝贵时间!
library(shiny)
ui <- fluidPage(
numericInput("Min", "Min",min = 0, max = 100, value = 42.5, step = 0.1),
numericInput("Max", "Max", min = 0.0, max = 100, value = 47.4, step = 0.1),
bookmarkButton(id = "bookmark")
)
server <- function(input, output, session) {
observeEvent(input$Max,{
req(input$Max, input$Min)
updateNumericInput(session,
"Min",
"Min",
value = input$Max - 0.1, min = 0.0, max = 100, step = 0.1)
})
observeEvent(input$bookmark,{
reactiveValuesToList(input)
session$doBookmark()
})
}
enableBookmarking("url")
shinyApp(ui = ui, server = server)
找到了!
将 ui
作为具有一个参数的函数很重要 request
ui <- function(request) { fluidPage(....) }
并且在具有 onRestore()
的服务器中,向量包含输入的当前状态,然后作为值提供给 update..Input()
library(shiny)
ui <- function(request){
fluidPage(
numericInput("Min", "Min",min = 0, max = 100, value = 42.5, step = 0.1),
numericInput("Max", "Max", min = 0.0, max = 100, value = 47.4, step = 0.1),
bookmarkButton()
)
}
server <- function(input, output, session) {
observeEvent(input$Max,{
req(input$Max, input$Min)
updateNumericInput(session,
"Min",
"Min",
value = input$Max - 0.1, min = 0.0, max = 100, step = 0.1)
})
onRestored(function(state) {
Min <- state$input$Min
Max <- state$input$Max
updateNumericInput(session, "Min", value = Min, min = 0.0, max = 100, step = 0.1)
updateNumericInput(session, "Max", value = Max, min = 0.0, max = 100, step = 0.1)
})
}
shinyApp(ui = ui, server = server, enableBookmarking = "url")
我有一个包含很多 updateNumericInputs
的应用程序,我希望能够为它们的状态添加书签。我把 reprex 做得非常小,但我仍然可以指出这个问题。我正在阅读有关书签的内容 - 我真的很困惑,我怀疑我需要更多代码行,尽管从我所附的图片看来我可能只差一个逗号。我一直在试验,尝试采用教程、文章、SO 答案中的代码,但我无法让它发挥作用。我将非常感谢解决方案和有关它的讲座。
非常感谢您的宝贵时间!
library(shiny)
ui <- fluidPage(
numericInput("Min", "Min",min = 0, max = 100, value = 42.5, step = 0.1),
numericInput("Max", "Max", min = 0.0, max = 100, value = 47.4, step = 0.1),
bookmarkButton(id = "bookmark")
)
server <- function(input, output, session) {
observeEvent(input$Max,{
req(input$Max, input$Min)
updateNumericInput(session,
"Min",
"Min",
value = input$Max - 0.1, min = 0.0, max = 100, step = 0.1)
})
observeEvent(input$bookmark,{
reactiveValuesToList(input)
session$doBookmark()
})
}
enableBookmarking("url")
shinyApp(ui = ui, server = server)
找到了!
将 ui
作为具有一个参数的函数很重要 request
ui <- function(request) { fluidPage(....) }
并且在具有 onRestore()
的服务器中,向量包含输入的当前状态,然后作为值提供给 update..Input()
library(shiny)
ui <- function(request){
fluidPage(
numericInput("Min", "Min",min = 0, max = 100, value = 42.5, step = 0.1),
numericInput("Max", "Max", min = 0.0, max = 100, value = 47.4, step = 0.1),
bookmarkButton()
)
}
server <- function(input, output, session) {
observeEvent(input$Max,{
req(input$Max, input$Min)
updateNumericInput(session,
"Min",
"Min",
value = input$Max - 0.1, min = 0.0, max = 100, step = 0.1)
})
onRestored(function(state) {
Min <- state$input$Min
Max <- state$input$Max
updateNumericInput(session, "Min", value = Min, min = 0.0, max = 100, step = 0.1)
updateNumericInput(session, "Max", value = Max, min = 0.0, max = 100, step = 0.1)
})
}
shinyApp(ui = ui, server = server, enableBookmarking = "url")