首页 > 解决方案 > Rshiny - 动态 ID 条件面板

问题描述

我是 Rshiny 的新手,这是我的第一个问题。

我正在尝试为文件夹中的每个数据集插入一个复选框和一个条件面板。如何使条件面板仅在选中复选框时可见?

由于 id 是动态的,我无法访问它的值。请帮助我,TIA

   dataDetails <- function(id,nameDef) {
    shiny::tags$div(
    class="dataSource",
   fillRow(
  checkboxInput(inputId = paste0("dataSource-", id), 
                label = nameDef,
                width = "100%"),

  conditionalPanel(paste0("input.dataSource-",id), 
                   # uiOutput("dataSourcesDate")) 
                   actionButton("dfcvs","dfvs")
  )
),
br(),
hr()
  )
 }



    lapply(list.files(path = "savefiles"), function(x) {
      insertUI(
   selector = '#dataSources',
    ui = tagList(dataDetails(
     id = x,
     nameDef = x
    ))
  )
  })

标签: shiny

解决方案


通常最好的做法是包含代码的最小工作示例,以便人们可以看到您正在尝试做什么。checkboxInput 在未选中时取值为 0,在选中时取值为 1。下面的代码显示了一个简单的工作示例,说明如何让 conditionalPanel 与您的 checkboxInputs 一起工作:

library(shiny)


ui <- shinyUI(
  fluidPage(
    checkboxInput("checkbox1", "Check Box 1", value = FALSE),
    checkboxInput("checkbox2", "Check Box 2", value = FALSE),
    checkboxInput("checkbox3", "Check Box 3", value = FALSE),
    checkboxInput("checkbox4", "Check Box 4", value = FALSE),
    conditionalPanel("input.checkbox1 == 1", "Check Box 1 Ticked"),
    conditionalPanel("input.checkbox2 == 1", "Check Box 2 Ticked"),
    conditionalPanel("input.checkbox3 == 1", "Check Box 3 Ticked"),
    conditionalPanel("input.checkbox4 == 1", "Check Box 4 Ticked")
    )
  )

server <- shinyServer(
  function(input, output, session) {

  }
) 

shinyApp(ui = ui, server = server)

推荐阅读