清除主面板以在有光泽的r studio

时间:2017-04-21 13:36:31

标签: r shiny

我的主面板中有一个dataTableOutput。然后我有一个动作按钮" Go"。点击" Go"我希望rHandsOutput出现在主面板中,但不在dataTableOutput下面。如何在主面板中删除dataTableOutput并显示rHandsOutput。在我当前的代码中,两个表一起出现。点击" Go"后,第二个表位于第一个表格中,我希望只显示第二个表格(rHandsOutput)从主面板中删除第一个表格。

请帮助我!1

3 个答案:

答案 0 :(得分:0)

动态生成ui。

uiOutput("someidentifier")中使用ui.r,然后使用server.r

中的以下内容填充数据表
output$someidentifier <- 
  renderUI({
    dataTableOutput("datatableidentifier")
  })

output$datatableidentifier <- renderDataTable(iris)

uiOutput取代您想要动态添加的任何ui元素的位置(在ui.r中)。然后,该ui的必要代码将移至renderUI中的server.r

答案 1 :(得分:0)

您可以结合使用insertUIremoveUI使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)

答案 2 :(得分:0)

您可以使用showElement()中的hideElement()shinyjs

observeEvent(input$go, {
  shinyjs::hideElement(“firsttable”)
  shinyjs::showElement(“rHandsOutput”)
})

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