ここにはconditionalPanel
を使用する解決策があります。基本的には、私はいつもnumericInput
から選択した値を読みますが、Set 3
が選択されていなければ、入力は隠されています。私は入力から値をマッピングするために少し異なるロジックを使用します(私のdata.frame
マッピングはより良い選択IMOのように見えるワイドフォーマットです)が、これはあなたのテストコードにそのまま当てはまるはずです。
library(shiny)
ui <- fluidPage(
inputPanel(radioButtons(
"set", "select set", inline = TRUE,
list("Set 1" = "s1", "Set 2" = "s2", "Set 3" = "s3")
)),
conditionalPanel("input.set == 's3'", inputPanel(
numericInput("A", "B", 50, 0, 100),
numericInput("B", "B", 50, 0, 100),
numericInput("C", "C", 50, 0, 100)
)),
verbatimTextOutput("text")
)
mapping <- data.frame(
row.names = c("s1", "s2"), A = c(35, 10), B = c(45, 20), C = c(99, 77)
)
server <- function(input, output, session){
observeEvent(input$set, {
req(input$set != "s3")
for(id in c("A", "B", "C"))
updateNumericInput(session, id, value = mapping[input$set, id])
})
output$text <- renderText({paste(input$A, input$B, input$C)})
}
shinyApp(ui, server)
また、代わりにrenderUI
を使用することができますが、conditionalPanel
sが、このタスクのためのより良い選択です。
3番目のラジオボタンは3つのテキストボックスをユーザーに与え、ABC値を入力する必要がありますか?もしそうなら、この場合のSetの値は何ですか? – amrrs