如何获取R Shiny中所有输出元素的列表

Mar*_*ark 5 r output shiny shinydashboard reactive

如何获得无功输出元素列表?

没有问题的是: observe(print(reactiveValuesToList(input)) )

什么不起作用我不明白的原因是: observe( print(reactiveValuesToList(output)) )

对于一个大型的复杂应用程序,我正在编写一个智能代码,在A部分中保存所有反应值和所有输入作为rds文件,saveRDSreactivevalues的构建方式是这样的;values <- reactivevalues()

B部分使用readRDS加载所有这些值.反应values$x被重新分配,输入$ x更新,例如updateTextinput(session, inputID, value),由于一些奇怪的原因也适用于selectInput元素,但这与我面临的问题无关.

我的应用程序还包含renderUI元素和renderText元素

要更新这些元素,我需要设置选项:

outputOptions(output, x, suspendWhenHidden = FALSE)}
Run Code Online (Sandbox Code Playgroud)

其中x是元素的名称.但是我有很多这些元素,并希望将此suspendWhenHidden选项的设置应用于列表.但是,尝试获取列表outputs不起作用:

observe( print(reactiveValuesToList(output)) )

如何获取所有渲染元素/所有输出元素的列表?

一个演示应用程序,用于显示它如何用于输入,但不适用于输出元素

library(shiny) 

rm(list = ls(), envir = globalenv())              ## to prevent cross over from old runs

ui <- dashboardPage(
  dashboardHeader(title = "Dummy App"),
  dashboardSidebar(
    sidebarMenu(id = "tabs",
                menuItem("HOME", tabName = "Home", icon = icon("home")),
                menuItem("Page", tabName = "page1", icon = icon("pie-chart"))
    ) ),
  dashboardBody(
   tabItems(
      tabItem(tabName = 'Home', 
                              br(), 
                              h1("WELCOME TO THE TEST APP", style = 'text-align: center;' )

      ),
      tabItem(tabName = 'page1',
       fluidRow(
         uiOutput("BatchName")
    )))))



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

output$BatchName <- renderUI({ textInput(inputId ="BatchName", label = NULL , placeholder = "start") })


observe(print(reactiveValuesToList(input)) )
observe( print(reactiveValuesToList(output)) )

outputOptions(output, "BatchName", suspendWhenHidden = FALSE)  ## without this line updating elements on page 2 and higher doesn't work as they are suspenWhenHidden = True by default
updateTextInput(session, inputId = "BatchName", value = "Updated") 

    }
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)

MrF*_*ick 6

查看文档?outputOptions,如果您没有传递名称,您将获得所有可能输出选项的列表.然后,您可以迭代该列表以设置所需的所有属性.

outs <- outputOptions(output)
lapply(names(outs), function(name) {
  outputOptions(output, name, suspendWhenHidden = FALSE) 
})
Run Code Online (Sandbox Code Playgroud)