我正在尝试在R shiny中构建一个应用程序,我正在使用handontable从用户那里获取输入。我手中的一栏是下拉列表,我需要用户多次选择。
例如,在我的下面的示例代码中,我想允许用户在“大”列中选择多个值(即用户应该能够为第一行选择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)
)
}
)
如果有人遇到同样的问题并解决了同样的问题,请告诉我。
答案 0 :(得分:0)
您的问题对我来说有点混乱,您希望滑块对用户放置的选项数量做出反应还是......?
然后我不知道为什么你放弃max = nrow(虹膜)如果你没有使用虹膜数据帧,这是没有意义的。
最后,如果你想拥有一个被动的用户界面,那么当用户放置一些内容时,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()
})`
我希望它有所帮助。