1

我正在尝试在 R Shiny 中构建一个应用程序,我正在使用一个掌上电脑从用户那里获取输入。我的handsontable 中的一列有下拉列表,我需要用户进行多项选择。

例如,在我下面的示例代码中,我希望允许用户在“大”列中选择多个值(即用户应该能够为第一行选择 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)
    )
  }
)

让我知道是否有人遇到过同样的问题并解决了同样的问题。

4

1 回答 1

0

您的问题对我来说有点令人困惑,您希望滑块对用户放置了多少个选定选项做出反应,或者......?

然后我不知道如果你不使用 iris 数据框,你为什么放 max = nrow(iris) ,这是没有意义的。

最后,如果您想要一个反应式 UI,那么当用户放置某些内容时,UI 会发生变化,您将需要以下内容:

1-服务器的反应功能:

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

2-服务器更改ui滑块的观察功能:

`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()
 })`

我希望它有所帮助。

于 2018-04-04T07:59:29.070 回答