如何在标记列表环境Shiny中创建变量



我正在用不同的输入小部件构建一个闪亮的面板。我希望一个小部件中给出的选项取决于前一个小程序中的输入。例如,我有一个pickerInput项,其中可以指定数据集中的变量(df(。接下来,我想显示checkboxGroupInput,您可以在其中选择先前选择的变量的唯一值。因此,checkboxGroupInput中的choices变量应该是包含先前选择的变量的所有唯一值的列表。我的代码现在看起来是这样的:

tagList(
pickerInput(inputId = "select_add",
label = "Select variable:",
choices = list(grouplist_1),
selected = NULL
),
list_members = c(unique(as.data.frame(df)[input$select_add])),
conditionalPanel(condition = "input.Name_add_member1.length > 0",
checkboxGroupInput(inputId = "def_members", label = "Define",
choices = list_members)
)

在代码中,list members生成一个列表,其中包含所选变量中的唯一值。但是,看起来这行代码并没有在这里执行。有人知道怎么解决这个问题吗?

过滤df以创建list_members的代码需要在Shiny应用程序的服务器部分,因为它涉及使用您的一个输入(input$select_add(进行计算。您可以使用renderUI()动态创建复选框组。

ui <- fluidPage(tagList(
uiOutput("variables"),
conditionalPanel(condition = "input.Name_add_member1.length > 0",
uiOutput("members"))
))
server <- function(input, output, session) {
df <- ... # df needs to be defined on the server side or in the global environment
output$variables <- renderUI({
pickerInput(
inputId = "select_add",
label = "Select variable:",
choices = colnames(df),
selected = NULL
)
})
output$members <- renderUI({
list_members = c(unique(as.data.frame(df)[input$select_add]))
checkboxGroupInput(inputId = "def_members",
label = "Define",
choices = list_members)
})
}

请记住,df需要位于全局环境和/或server()命名空间中。

最新更新