2017-10-25 12 views
2

現在、ラジオボタンを使用して、使用されている値のセットを選択しています。ラジオボタンと数値セットの数値入力の組み合わせ

radioButtons("set", "Select your set!", 
        list("Set 1" = "s1", 
          "Set 2" = "s2") 

各セットは、「A」、「B」および「C」のそれぞれの値が異なります。

Set Var Val 
1 s1 A 35 
2 s1 B 45 
3 s1 C 99 
4 s2 A 10 
5 s2 B 20 
6 s2 C 77 

これは問題なく機能します。私の出力では、私はここで

subset(dat, Set==input$set)) 

を使用する私の問題である: 私はあなたが手動でnumericInputを経由して「A」、「B」と「C」の値を設定することができます第三のラジオボタンを追加したいと思います。 さらに、各入力フィールドの初期値は、radioButtonsで最後に選択したセットから更新する必要があります。

+0

3番目のラジオボタンは3つのテキストボックスをユーザーに与え、ABC値を入力する必要がありますか?もしそうなら、この場合のSetの値は何ですか? – amrrs

答えて

0

ここには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が、このタスクのためのより良い選択です。

関連する問題