Чтобы разрешить множественный выбор в выпадающем списке столбцов Rhandsontable

Я пытаюсь создать приложение на R глянцевый, где я использую hands -table для получения информации от пользователей. В одном столбце моей руки есть выпадающие списки, в которых мне нужно несколько вариантов выбора от пользователя.

Например, в приведенном ниже примере кода я хочу разрешить пользователю выбирать несколько значений в столбце "большой" (т. Е. Пользователь должен иметь возможность выбрать A,B,C для первой строки и аналогично для других строк)

library(shiny)
library(rhandsontable)

shinyApp(
  ui = fluidPage(
    fluidRow(
      column(12,
             sliderInput('input', label = "Rows",
                         min = 1, max = nrow(iris), value = 10)
      ),

      column(12
             ,
             rHandsontableOutput('table')
      )
    )
  ),
  server = function(input, output) {
    DF = data.frame(val = 1:10, bool = TRUE, big = LETTERS[1:10],
                    small = letters[1:10],
                    dt = seq(from = Sys.Date(), by = "days", length.out = 10),
                    stringsAsFactors = FALSE)

    # try updating big to a value not in the dropdown
    output$table <- renderRHandsontable(
      rhandsontable(DF, rowHeaders = NULL, width = 550, height = 300) %>%
        hot_col(col = "big", type = "dropdown", source = LETTERS) %>%
        hot_col(col = "small", type = "autocomplete", source = letters,
                strict = FALSE)
    )
  }
)

Дайте мне знать, если кто-то сталкивался с той же проблемой и решил то же самое.

1 ответ

Ваш вопрос немного сбивает меня с толку, вы хотите, чтобы слайдер реагировал на то, сколько выбранных опций выбрал пользователь или...?

Тогда я не знаю, почему вы ставите max = nrow(радужная оболочка), если вы не используете информационную рамку радужной оболочки, это не имеет смысла.

Наконец, если вы хотите иметь реактивный пользовательский интерфейс, поэтому, когда пользователь что-то вставит, пользовательский интерфейс изменится, вам понадобится следующее:

1- Реактивная функция для сервера:

`outSli <- reactive({
 ##here you put your action
 })`

2- Функция наблюдения для сервера для изменения ползунка пользовательского интерфейса:

`observe({
 ##here you put the outSli() that contains your action or algorithm and then you update the slider
 updateSliderInput(session, "input", label = NULL, value = NULL,
  min = NULL, max = NULL, step = NULL)
 ##all those NULLs is what you change with your outSli()
 })`

Я надеюсь, что это помогает.

Другие вопросы по тегам