gpt4 book ai didi

r - 从 Shiny 书签中排除所有输入

转载 作者:行者123 更新时间:2023-12-04 15:43:51 33 4
gpt4 key购买 nike

我的 Shiny 应用程序有一个自定义书签 URL。我用 setBookmarkExclude()排除所有输入(即小部件)。然后我使用 onBookmark()建立书签网址和onRestore()来恢复状态。

在开发过程中,如果添加了新的小部件,它们的 ID 也必须添加到 setBookmarkExclude() 中。功能。如果不是,则书签 URL 将更改。

是否有适当的方法来排除所有输入?

最初我试过 setBookmarkExclude(names(input))但这不起作用,因为当 input 时从应用程序的服务器函数内部调用此函数尚未初始化。

显然,相反的函数setBookmarkInclude(NULL)会是理想的吗?

最佳答案

您已经提到使用 setBookmarkExclude(names(input)) ,这是正确的方法。

关键是动态使用setBookmarkExclude包裹在观察者中。

这是我的回答 here 的修改版本显示如何排除动态生成的输入:

library(shiny)

ui <- function(request) {
fluidPage(
br(),
bookmarkButton(id = "bookmarkBtn"),
actionButton(inputId = "addSlider", label = "Add slider..."),
hr(),
textOutput("ExcludedIDsOut"),
hr(),
sliderInput(inputId="slider1", label="My value will be bookmarked", min=0, max=10, value=5),
uiOutput("slider2")
)
}

server <- function(input, output, session) {

bookmarkingWhitelist <- c("slider1")

observeEvent(input$bookmarkBtn, {
session$doBookmark()
})

ExcludedIDs <- reactiveVal(value = NULL)

observe({
toExclude <- setdiff(names(input), bookmarkingWhitelist)
setBookmarkExclude(toExclude)
ExcludedIDs(toExclude)
})

output$ExcludedIDsOut <- renderText({
paste("ExcludedIDs:", paste(ExcludedIDs(), collapse = ", "))
})

observeEvent(input$addSlider, {
output$slider2 <- renderUI({
sliderInput(inputId="slider2", label="My value will not be bookmarked", min=0, max=10, value=5)
})
}, once = TRUE)

}

enableBookmarking(store = "url")
shinyApp(ui, server)

关于r - 从 Shiny 书签中排除所有输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56700599/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com