Добавление выбора textInput в мой фрейм данных в блестящем, и возможность выбрать его снова вместо повторного набора - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь создать блестящее приложение, если пользователь выбирает радиокнопку «прочее», которая может набирать его, но также сохранять в бэкэнде, так как пользователю не нужно перепечатывать его при выборе «другого» радио кнопка снова.

Пытался использовать функцию UpdateSelectInput.

radioButtons(inputId = "Id", label = "Select Id ",inline = TRUE,
                     choices = list("choice 1", "choice 2","OTHER"), selected = "choice 1"),

uiOutput("sub_choices")

server <- function(input, output, session){

  output$sub_choices<- renderUI({
    if(input$Id== "choice 1"){
      selectInput(inputId="sub_Ids",
                  label="Select sub Ids",
                  choices = list("sub choice 1", "sub choice 2" , "sub choice 3", selected = "")

    }else if(input$Id == "choice 2"){
      selectInput(inputId="sub_Ids",
                  label="Select sub Ids",
                  choices = list("sub choice 1", "sub choice 2" , "sub choice 3", selected = "")
    }else{
      textInput(inputId = "other_choice", label = "Type Other",
                value = "")
    }
  })

Ответы [ 2 ]

0 голосов
/ 25 марта 2020

Когда можно использовать conditionalPanel вместо renderUI, я предпочитаю conditionalPanel.

library(shiny)

ui <- fluidPage(
  radioButtons(inputId = "Id", label = "Select Id ",inline = TRUE,
               choices = list("choice 1", "choice 2", "OTHER"), selected = "choice 1"),
  conditionalPanel(
    "input.Id === 'choice 1' || input.Id === 'choice 2'",
    selectInput(inputId="sub_Ids",
                label="Select sub Ids",
                choices = list("sub choice 1", "sub choice 2", "sub choice 3"))
  ),
  conditionalPanel(
    "input.Id === 'OTHER'",
    textInput(inputId = "other_choice", label = "Type Other",
              value = "")
  )
)

server <- function(input, output, session){

}

shinyApp(ui, server)
0 голосов
/ 25 марта 2020

Вы можете сохранить текст из input$other_choice как reactiveVal и использовать снова.

library(shiny)

ui <- fluidPage(
  radioButtons(inputId = "Id", label = "Select Id ",inline = TRUE,
               choices = list("choice 1", "choice 2","OTHER"), selected = "choice 1"),
  uiOutput("sub_choices")
)

server <- function(input, output, session){

  rv <- reactiveVal("")

  observe({
    rv(input$other_choice)
  })

  output$sub_choices <- renderUI({

    if (input$Id == "choice 1") {
      selectInput(inputId="sub_Ids",
                  label="Select sub Ids",
                  choices = list("sub choice 1", "sub choice 2", "sub choice 3", selected = ""))
    } else if(input$Id == "choice 2"){
      selectInput(inputId="sub_Ids",
                  label="Select sub Ids",
                  choices = list("sub choice 1", "sub choice 2" , "sub choice 3", selected = ""))
    } else{
      textInput(inputId = "other_choice", label = "Type Other",
                value = rv())
    }

  })

}

shinyApp(ui, server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...