r - 将数据框转换为 selectInput 中的选择列表( Shiny )

标签 r list dataframe shiny

我有一个对应于下面示例的数据框:

df = data.frame(subject=c("Subject A", "Subject B", "Subject C", "Subject D"),id=c(1:4))

我想把这个数据框转换成一个列表对象,可以方便地在selectInput中实现:

selectInput("subject", "Subject",
            choices = #my_new_list )

我希望最终用户查看选择中的主题列表,并希望 selectInput 返回相应的数值 (id) .

如果我尝试通过以下方式获取我的列表:

df <- data.frame(lapply(df, as.character),
                         stringsAsFactors = FALSE)
df <- as.list(df)

selectInput 下拉菜单显示所有可用选项:

Select Input Preview

我只对列出主题和传递相应的数值感兴趣。

最佳答案

使用函数split:

my_new_list <- split(df$id, df$subject)
my_new_list
#$`Subject A`
#[1] 1

#$`Subject B`
#[1] 2

#$`Subject C`
#[1] 3

#$`Subject D`
#[1] 4

连同函数with:

my_new_list <- with(df, split(id, subject))

关于r - 将数据框转换为 selectInput 中的选择列表( Shiny ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31203985/

相关文章:

r - 如何以整洁的方式重新排序因子水平?

r - 如何在箱线图上显示异常值的 id

按 list() 变量名而不是 R 中的索引重命名

r - 如何将随机 `NA`添加到数据框中

r - 如何在 R 的 split.screen 模式下更改屏幕大小?

r - 为什么查询data.frame中变量的属性时sapply相对较慢?

list - 如何对序言中的年龄列表进行排序?

javascript - 不同对象的getAttribute是一样的

python - 在独立运行的 python 脚本之间共享 python 对象(例如 Pandas Dataframe)

python - Python中对多个Dataframes的操作