R 在闪亮的应用程序中使用2个动作按钮在3个绘图之间切换

R 在闪亮的应用程序中使用2个动作按钮在3个绘图之间切换,r,shiny,R,Shiny,我有一个闪闪发光的app,在它下面initialy应该显示iris数据集的绘图。如果按下Datatable,则应显示iris数据集的Datatable,如果再次按下,则应再次显示iris数据集的初始绘图。 如果按下Iris3,则应显示Iris3数据集的绘图,如果再次按下,则应再次显示iris数据集的初始绘图 library(shiny) library(DT) ui <- fluidPage( sidebarLayout( sidebarPanel(

我有一个闪闪发光的
app,在它下面initialy应该显示
iris
数据集的绘图。如果按下
Datatable
,则应显示
iris
数据集的Datatable,如果再次按下,则应再次显示
iris
数据集的初始绘图。 如果按下
Iris3
,则应显示
Iris3
数据集的绘图,如果再次按下,则应再次显示
iris
数据集的初始绘图

library(shiny)
library(DT)
ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      
      
      actionButton("exc",
                   "Datatable"),
      actionButton("other","Iris3")
    ),
    mainPanel(
      uiOutput(outputId = "iris_plot")
      
    )
  )
)
server <- function(input, output) {
  
  showPlot <- reactiveVal(TRUE)
  showPlotiris3 <- reactiveVal(TRUE)
  
  observeEvent(input$exc, {
    showPlot(!showPlot())
  })
  observeEvent(input$other, {
    showPlotiris3(!showPlotiris3())
  })
  output$iris_plot <- renderUI({
    if (showPlot()){
      plotOutput("plot")
    }
    else if(showPlotiris3()){
      plotOutput("plot2")
    }
    else{
      dataTableOutput("table")
    }
  })
  
  output[["plot"]] <- renderPlot({
    plot(iris)
  })
  output[["plot2"]] <- renderPlot({
    plot(iris3)
  })
  output[["table"]] <- renderDataTable(datatable(iris))
  
}
shinyApp(ui = ui, server = server)
库(闪亮)
图书馆(DT)
ui试试这个

library(shiny)
library(DT)
ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      actionButton("exc","Datatable"),
      actionButton("other","Iris3")
    ),
    mainPanel( verbatimTextOutput("t1"),
      uiOutput(outputId = "iris_plot")
    )
  )
)
server <- function(input, output) {
  
  store <- reactiveValues()
  observe({store$plotrtable <- DTOutput("table")})
  
  observeEvent(input$exc, {
    if (as.numeric(input$exc) %% 2 == 1){store$plotrtable <- plotOutput("plot")
    }else store$plotrtable <- DTOutput("table")
  })
  observeEvent(input$other, {
    if (as.numeric(input$other) %% 2 == 1){store$plotrtable <- plotOutput("plot2")
    }else store$plotrtable <- DTOutput("table")
  })
  
  output[["plot"]] <- renderPlot({
    plot(iris)
  })
  output[["plot2"]] <- renderPlot({
    plot(iris3)
  })
  output[["table"]] <- renderDT(datatable(iris))

  output$iris_plot <- renderUI({
    store$plotrtable
  })
  
}
shinyApp(ui = ui, server = server)
库(闪亮)
图书馆(DT)
用户界面