清除主面板以在Shining r studio中显示其他无功输出

清除主面板以在Shining r studio中显示其他无功输出,r,shiny,R,Shiny,我的主面板中有一个dataTableOutput。然后我有一个动作按钮“开始”。单击“Go”后,我希望rHandsOutput显示在主面板中,但不显示在dataTableOutput下面。如何删除主面板中的dataTableOutput并显示rHandsOutput。在我当前的代码中,两个表同时出现。单击“Go”后,第二个表位于第一个表下,我只想在其中显示第二个表(rHandsOutput),从主面板中删除第一个表 请帮帮我!1动态生成ui 在ui.r中使用uiOutput(“someident

我的主面板中有一个dataTableOutput。然后我有一个动作按钮“开始”。单击“Go”后,我希望rHandsOutput显示在主面板中,但不显示在dataTableOutput下面。如何删除主面板中的dataTableOutput并显示rHandsOutput。在我当前的代码中,两个表同时出现。单击“Go”后,第二个表位于第一个表下,我只想在其中显示第二个表(rHandsOutput),从主面板中删除第一个表


请帮帮我!1

动态生成ui

ui.r
中使用
uiOutput(“someidentifier”)
,然后在
server.r
中用数据表填充它

output$someidentifier <- 
  renderUI({
    dataTableOutput("datatableidentifier")
  })

output$datatableidentifier <- renderDataTable(iris)

output$someidentifier您可以结合使用
insertUI
removeUI
使UI组件动态化。例如:

library(shiny)

ui <- fluidPage(


sidebarLayout(
  
  sidebarPanel(
    
    actionButton(inputId = "go", label = "Go")
    
  ),
  
mainPanel(
  
  fluidRow(
    tags$div(id = "firstOutput", 
           dataTableOutput("myDataTable"))
    ),
  
  fluidRow(
    tags$div(id = "placeholder") # the dynamic UI will be inserted relative to this placeholder
    )
))

)


server <- function(input, output) {
  
  output$myDataTable <- renderDataTable(iris)
    
  observeEvent(input$go, {
    
    removeUI("div:has(>#firstOutput)")
    
    insertUI(
      selector = "#placeholder",
      where = "afterEnd", # inserts UI after the end of the placeholder element
      ui = fluidRow(
        actionButton(inputId = "newButton", label = "A new button")))
    
    })
  
}

shinyApp(ui = ui, server = server)
库(闪亮)

ui您可以从
shinyjs
使用
showElement()
hideElement()

observeEvent(输入$go{
shinyjs::hideElement(“第一个表”)
shinyjs::showElement(“rHandsOutput”)
})

假设第一个表的ID为“firsttable”,第二个表的ID为“rHandsOutput”,而“Go”按钮的ID为“Go”。

这只是在ui中显示表的另一种方式,并不能解决问题。