shiny - selectInput R Shiny中的动态组数
问题描述
我需要帮助完成一项任务。我有数据框:
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")
)
我想获得如下图所示的 selectInput 版本。
我找到了代码:
selectInput("state", "Choose a state:",
list(
`East Coast` = list("NY", "NJ", "CT"),
`West Coast` = list("WA", "OR", "CA"),
`Midwest` = list("MN", "WI", "IA")
)
)
手动操作很容易,但问题是 df 是来自数据库的数据框,它可以包含随机数量的组和用户。有谁知道如何编写 selectInput 的代码或如何在自动获得预期效果之前准备数据?
解决方案
如这里所说,您可以使用split()
. 显然,当一个组包含单个观察时,它不会很好地工作,所以我添加User1 bis
了给你看。此外,您需要为组为的人创建一个类别NA
(我在此处放置“无组”,以便它按字母顺序排列在输入列表的末尾)。
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)
推荐阅读
- powershell - 远程 PowerShell 脚本的 Newby 问题
- javascript - Ajax 调用、函数回调、javascript
- ruby-on-rails - Rails - 安装 pg (1.1.3) 时出现 Gem 错误,并且 Bundler 无法继续
- c - 如何复制涉及C中指针的结构?
- reactjs - 反应打字稿(2312,14):重复标识符'LibraryManagedAttributes'
- r - 根据第一个双向量重新排序第二个双向量
- java - React Native 中的浮动小部件
- python - 在python中解析依赖版本要求规范
- vba - 我如何循环这个语句?
- pyspark - pyspark 从哪里导入 unpackArray?