R Shiny条件输入标签基于另一个输入

时间:2016-11-15 18:10:11

标签: r shiny

我试图让label的{​​{1}}包含从输出派生的名称,该输出是使用其他输入创建的。我一直在研究,但还没弄清楚如何做到这一点。以下是我尝试过的,但无济于事。

ui.R

conditionalPanel

server.R

shinyUI(
  fluidPage(    
    titlePanel("example"),
    sidebarLayout(     
      sidebarPanel(

        numericInput("criteria_count", 
                     label = "How many criteria are being considered? (max = 5)", 
                     2, min = 2, max = 5),

        textInput("critera_text",
                  label = "Type the different criteria titles, seperated by commas.",
                  value = "Example A, Example B"),
        #verbatimTextOutput("value"),

        conditionalPanel(condition = "input.criteria_count == 2",
                         selectInput("main_cri1",
                                     label = paste0("How much more important is ", output.criteria1, " than ", output.criteria2, "?"),
                                     c("9 (Extremely more important)",
                                       "7 (Much more important)",
                                       "5 (Moderately more important)",
                                       "3 (Slightly more important)",
                                       "1 (Equally as important)",
                                       "1/3 (Slightly less important)",
                                       "1/5 (Moderately less important)",
                                       "1/7 (Much less important)",
                                       "1/9 (Extremely less important)")))

      )  
    )
  )
)

鉴于上面的ui.R,library(shiny) shinyServer(function(input, output){ output$criteria1 <- renderText({ strsplit(input$critera_text, ", ")[[1]][1] }) output$criteria2 <- renderText({ strsplit(input$critera_text, ", ")[[1]][2] }) }) 的{​​{1}}应如下所示:

“示例A比示例B重要多少?”

1 个答案:

答案 0 :(得分:1)

试试这个(app.R

ui <-
  fluidPage(titlePanel("example"),
            sidebarLayout(

              sidebarPanel(
                numericInput(
                  "criteria_count",
                  label = "How many criteria are being considered? (max = 5)",
                  2,
                  min = 2,
                  max = 5
                ),

                textInput("critera_text",
                          label = "Type the different criteria titles, seperated by commas.",
                          value = "Example A, Example B"),

                conditionalPanel(condition = "input.criteria_count == 2",
                                 uiOutput("mySelectInput"))
              ),

              mainPanel()

            ))

server <-
  function(input, output) {
    output$mySelectInput <- renderUI({
      criteria1 <- strsplit(input$critera_text, ", ")[[1]][1]
      criteria2 <- strsplit(input$critera_text, ", ")[[1]][2]

      selectInput(
        "main_cri1",
        label = paste0(
          "How much more important is ",
          criteria1,
          " than ",
          criteria2,
          "?"
        ),
        choices = c(
          "9 (Extremely more important)",
          "7 (Much more important)",
          "5 (Moderately more important)",
          "3 (Slightly more important)",
          "1 (Equally as important)",
          "1/3 (Slightly less important)",
          "1/5 (Moderately less important)",
          "1/7 (Much less important)",
          "1/9 (Extremely less important)"
        )
      )
    })
  }

shinyApp(ui = ui, server = server)