我已经创建了一个闪亮的数据表,用户可以在其中选择将ID视为从属,独立还是无。为了方便起见,我附上了一个可复制的示例。如果您运行该应用程序,则默认情况下,所有ID均归为“独立”。我接下来要尝试做的但当前未成功的是,默认情况下,与ID 3对应的选择应为Dependent。我正在为dataTable中的每一行使用一个selectInput。有人可以帮助我了解如何将一个特定的ID设置为依赖,默认情况下将其设置为独立。当用户随后运行该应用程序时,他可以使用selectInputs根据自己的需要更改ID下的选择。
library(shiny)
library(DT)
ui = fluidPage(
DT::dataTableOutput('x1'),
)
server = function(input, output, session) {
# Helper function for making checkbox
shinyInput = function(FUN, len, id,...) {
inputs = character(len)
for (i in seq_len(len)) {
inputs[i] = as.character(FUN(paste0(id, i), label = NULL, ...))
}
inputs
}
# helper function for reading selections
shinyValue = function(id, len) {
unlist(lapply(seq_len(len), function(i) {
value = input[[paste0(id, i)]]
if (is.null(value)){
NA
} else {
value
}
}))
}
n = 5
df = data.frame(ID = seq_len(n),
selection = shinyInput(selectInput, n, 'cb_', choices=c("Independent","Dependent","None")),
month = month.abb[1:n],
stringsAsFactors = FALSE)
output$x1 = DT::renderDataTable({
df},
escape = FALSE, selection = 'none',
options = list(
dom = 't', paging = FALSE, ordering = FALSE,
preDrawCallback = JS('function() { Shiny.unbindAll(this.api().table().node()); }'),
drawCallback = JS('function() { Shiny.bindAll(this.api().table().node()); } ')
),rownames=FALSE)
}
shinyApp(ui = ui,server = server)
答案 0 :(得分:0)
从?selectInput
已选择(初始选择的值)(或多个,如果Multiple = TRUE)。如果未指定,则对于单选列表,默认为第一个值;对于多选列表,默认为第一个值。
因此,默认情况下,selectInput
将选择第一个值作为默认值,因此,当i = 3(即ID = 3)时,我们需要更改默认值
# Helper function for making checkbox
shinyInput = function(FUN, len, id,...) {
#browser()
inputs = character(len)
for (i in seq_len(len)) {
if(i!=3){
inputs[i] = as.character(FUN(paste0(id, i), label = NULL, ...))
} else {
inputs[i] = as.character(FUN(paste0(id, i), label = NULL, selected = "Dependent",...))
}
}
inputs
}