Shiny Selectr输入框中的动态组数

Shiny Selectr输入框中的动态组数,shiny,selectinput,Shiny,Selectinput,我在一项任务中需要帮助。我有数据帧: df <- data.frame( UserGroup = c("UserGroup1", "UserGroup2", "UserGroup2", "UserGroup3", "UserGroup3", "UserGroup3", NA, NA, NA, NA), User = c("User1", "User2", "User3", "User4", "User5", "User6", "User7", "User8", "User9", "

我在一项任务中需要帮助。我有数据帧:

df <- data.frame(
  UserGroup = c("UserGroup1", "UserGroup2", "UserGroup2", "UserGroup3", "UserGroup3", "UserGroup3", NA, NA, NA, NA),
  User = c("User1", "User2", "User3", "User4", "User5", "User6", "User7", "User8", "User9", "User10")
)
手动操作很容易,但问题是df是一个来自数据库的数据帧,它可以包含随机数目的组和用户。 有人知道如何编写selectInput的代码,或者如何在自动获得预期效果之前准备数据吗?

如前所述,您可以使用
split()
。显然,当一个组包含一个观察值时,它不会很好地工作,所以我添加了
user1bis
来向您展示。此外,您还需要为组为
NA
的用户创建一个类别(我在此处添加了“无组”,以便按字母顺序排列在输入列表的末尾)

库(闪亮)
图书馆(dplyr)

df太好了,谢谢,这正是我想要的!
    selectInput("state", "Choose a state:",
       list(
          `East Coast` = list("NY", "NJ", "CT"),
          `West Coast` = list("WA", "OR", "CA"),
          `Midwest` = list("MN", "WI", "IA") 
       )
    )
library(shiny)
library(dplyr)

df <- data.frame(
  UserGroup = c("UserGroup1", "UserGroup1", "UserGroup2", "UserGroup2", "UserGroup3", "UserGroup3", "UserGroup3", NA, NA, NA, NA),
  User = c("User1", "User1 bis", "User2", "User3", "User4", "User5", "User6", "User7", "User8", "User9", "User10")
)

df_2 <- df %>%
  mutate(UserGroup = ifelse(is.na(UserGroup), "Without Group", UserGroup)) 

ui <- fluidPage(
  selectInput("state", "Choose a state:",
              choices = split(df_2$User, df_2$UserGroup),
              selected = "User 1"
  )

)

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

shinyApp(ui, server)