Shiny: Dynami c количество текстовых входов для нескольких значений в столбце - PullRequest
0 голосов
/ 14 апреля 2020

Я блестящий новичок и застрял на чем-то. У меня есть реактивный кадр данных, сохраненный как store$df. Пользователь выбирает столбец и выбирает, какой он должен быть, если это ENUM, сервер наблюдает за этим и возвращаются все возможные комбинации в этом столбце.

Я пытаюсь переназначить каждый из этих входов в store$df, в зависимости от ввода пользователя.

Когда я не включаю actionButton("changeValues", "Change all") эту функцию, каждый из текстовые вводы отображаются, но как только я включаю их, они исчезают.

Как мне go переопределить все ячейки, которые переименованы в textInputs?

library(shiny)
ui <- shinyUI(fluidPage(

  sidebarLayout(
    sidebarPanel(
        selectInput(inputId = "OldColumnName"), ## code missing!!!),

        selectInput(
          "type", "What type is this column?",
          c("string", "int", "enum")
        ),
        uiOutput('enum')
    )),
     mainPanel(
      dataTableOutput("ResultsTable"),

  )))

server <- function(input, session, output){session$onSessionEnded(stopApp)


  store <- reactiveValues()

  observeEvent(input$type, {
    req(input$OldColumnName)


    if(input$type == 'enum') {

      oldCol <- input$OldColumnName

      categories <- unique(store$df[oldCol]) 
      numberOfCategories <- nrow(categories)
      output$enum <- renderUI({

        lapply(1:numberOfCategories, function(i) {
         textInput(paste0("enum_",categories[i,1]), label = paste0(categories[i,1]))
        })
        actionButton("changeValues", "Change all")

      })
    }
  })

  observeEvent(input$changeValues, {
    lapply(1:numberOfCategories, function(i) {

      x <- paste0("enum_",categories[i,1])
      print(x)

      store$df[df[input$OldColumnName== paste0(categories[i,1])]] <- input[[x]]

   })

  })

store$df <- read_excel(inFile$datapath)

output$ResultsTable <- renderDT(
  store$df
)


}

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