#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 …? Или я должен ссылаться на это по-другому?