R Блестящий, чтобы вторая кнопка действия 2 появлялась после нажатия кнопки действия 1

#r #shiny #action-button

#r #блестящий #кнопка действия

Вопрос:

Я думаю, что мне не хватает чего-то очень простого.

Я хочу, чтобы мой пользователь нажал на кнопку действия 1, чтобы появилась кнопка действия 2. Но как я могу «отобразить» новую кнопку действия в пользовательском интерфейсе?

Мой код приведен ниже. Большое вам спасибо!

 library(shiny)
ui = shinyUI(fluidPage(
  sidebarLayout(
    sidebarPanel(
      actionButton("button1", label = "Press Button 1")
    ),
    mainPanel(
      # what should I write here?
      #renderPrint("button2")
    )
  )
))

server = shinyServer(function(input, output, session) {
  observeEvent(input$button1, {
    output$button2 <- renderUI({
      actionButton("button2", label = "Press Button 2")
    })
  })
})
shinyApp(ui = ui, server = server)
  

Ответ №1:

Если вы используете renderUI() на стороне сервера, вы должны использовать uiOutput() на стороне пользовательского интерфейса.

Полный код считывается:

 library(shiny)
ui = shinyUI(fluidPage(
  sidebarLayout(
    sidebarPanel(
      actionButton("button1", label = "Press Button 1")
    ),
    mainPanel(
      # what should I write here?
      uiOutput("button2")
    )
  )
))

server = shinyServer(function(input, output, session) {
  observeEvent(input$button1, {
    output$button2 <- renderUI({
      actionButton("button2", label = "Press Button 2")
    })
  })
})
shinyApp(ui = ui, server = server)
  

Комментарии:

1. Вот и все! Большое вам спасибо!

2. Быстрый вопрос — как я могу ссылаться на button2 в будущем (например, для создания observeEvent, зависящего от button2? Могу ли я все еще сказать: observeEvent (введите $ button2 …? Или я должен ссылаться на это по-другому?