单击R中的不同按钮,在同一框中显示表格或图表

单击R中的不同按钮,在同一框中显示表格或图表,r,shiny,action-button,R,Shiny,Action Button,我正在尝试创建一个带有两个按钮的应用程序,在同一个框内容中显示图表或表格(而不是两者)。 例如,如果用户单击“图表”按钮,则会显示图表。同样,点击表格按钮,表格出现在相同的位置,图表消失 最小示例 if (interactive()) { library(shiny) library(shinydashboard) shinyApp( ui = shinydashboard::dashboardPage( header = dashboardHeader(),

我正在尝试创建一个带有两个按钮的应用程序,在同一个框内容中显示图表或表格(而不是两者)。 例如,如果用户单击“图表”按钮,则会显示图表。同样,点击表格按钮,表格出现在相同的位置,图表消失

最小示例

if (interactive()) {
  library(shiny)
  library(shinydashboard)
  shinyApp(
    ui = shinydashboard::dashboardPage(
      header = dashboardHeader(),
      sidebar = dashboardSidebar(),
      body = dashboardBody(
        actionButton(inputId = 'input1', label = 'Chart'),
        actionButton(inputId = 'input2', label = 'Table'),
        box(
          uiOutput('plot_table_output'))
      ),
      title = "DashboardPage"
    ),
    server = function(input, output) {
      output$plot_table_output <- renderUI({
        if(input$input1 >0) {
          plotOutput('my_plot')
        }
        if(input$input2 >0) {
          dataTableOutput('mytable')
        } 
      })
      
      output$my_plot <- renderPlot({
        mydf <- data.frame(X=1:10, Y=1:10)
        plot(mydf$X, mydf$Y, type = 'l')
      })
      
      output$mytable <- renderDataTable({
        mydf <-  data.frame(X=1:10, Y=1:10)
        mydf
      })   
    }
  )
}

if(交互式()){
图书馆(闪亮)
图书馆(shinydashboard)
shinyApp(
ui=shinydashboard::仪表板页面(
header=仪表板header(),
侧栏=仪表板侧栏(),
车身=仪表板车身(
actionButton(inputId='input1',label='Chart'),
actionButton(inputId='input2',label='Table'),
盒子(
uiOutput('绘图\表格\输出')
),
title=“仪表板页面”
),
服务器=功能(输入、输出){
输出$plot\u表格\u输出0){
plotOutput(“我的绘图”)
}
如果(输入$input2>0){
dataTableOutput('mytable')
} 
})

输出$my_plot执行此操作的一种方法是使用
ObserveEvent()

library(shiny)
library(shinydashboard)
shinyApp(
  ui = shinydashboard::dashboardPage(
    header = dashboardHeader(),
    sidebar = dashboardSidebar(),
    body = dashboardBody(
      actionButton(inputId = 'input1', label = 'Chart'),
      actionButton(inputId = 'input2', label = 'Table'),
      box(
        uiOutput('plot_table_output'))
    ),
    title = "DashboardPage"
  ),
  server = function(input, output) {
    
    observeEvent(input$input1, {
      output$plot_table_output <- renderUI({
          plotOutput('my_plot')
      })
    })
    
    observeEvent(input$input2, {
      output$plot_table_output <- renderUI({
        dataTableOutput('mytable')
      })
    })
    
    output$my_plot <- renderPlot({
      mydf <- data.frame(X=1:10, Y=1:10)
      plot(mydf$X, mydf$Y, type = 'l')
    })
    
    output$mytable <- renderDataTable({
      mydf <-  data.frame(X=1:10, Y=1:10)
      mydf
    })   
  }
)
库(闪亮)
图书馆(shinydashboard)
shinyApp(
ui=shinydashboard::仪表板页面(
header=仪表板header(),
侧栏=仪表板侧栏(),
车身=仪表板车身(
actionButton(inputId='input1',label='Chart'),
actionButton(inputId='input2',label='Table'),
盒子(
uiOutput('绘图\表格\输出')
),
title=“仪表板页面”
),
服务器=功能(输入、输出){
observeEvent(输入$input1{

output$plot\u table\u output一种方法是使用
ObserveEvent()

library(shiny)
library(shinydashboard)
shinyApp(
  ui = shinydashboard::dashboardPage(
    header = dashboardHeader(),
    sidebar = dashboardSidebar(),
    body = dashboardBody(
      actionButton(inputId = 'input1', label = 'Chart'),
      actionButton(inputId = 'input2', label = 'Table'),
      box(
        uiOutput('plot_table_output'))
    ),
    title = "DashboardPage"
  ),
  server = function(input, output) {
    
    observeEvent(input$input1, {
      output$plot_table_output <- renderUI({
          plotOutput('my_plot')
      })
    })
    
    observeEvent(input$input2, {
      output$plot_table_output <- renderUI({
        dataTableOutput('mytable')
      })
    })
    
    output$my_plot <- renderPlot({
      mydf <- data.frame(X=1:10, Y=1:10)
      plot(mydf$X, mydf$Y, type = 'l')
    })
    
    output$mytable <- renderDataTable({
      mydf <-  data.frame(X=1:10, Y=1:10)
      mydf
    })   
  }
)
库(闪亮)
图书馆(shinydashboard)
shinyApp(
ui=shinydashboard::仪表板页面(
header=仪表板header(),
侧栏=仪表板侧栏(),
车身=仪表板车身(
actionButton(inputId='input1',label='Chart'),
actionButton(inputId='input2',label='Table'),
盒子(
uiOutput('绘图\表格\输出')
),
title=“仪表板页面”
),
服务器=功能(输入、输出){
observeEvent(输入$input1{
输出$plot\u table\u输出