R 在selectInput中将数据框转换为选择列表(闪亮)

R 在selectInput中将数据框转换为选择列表(闪亮),r,list,dataframe,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返回相应

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

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)

df对于
选项
参数,您可以使用文档中的命名列表:

如果列表中的元素已命名,则使用该名称而不是值 将显示给用户

要创建命名列表,您可以尝试:

your_choices <- as.list(df$id)
names(your_choices) <- df$subject

使用函数
拆分

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

使用
setNames
,例如:

selectizeInput('x3','x3',choices=setNames(state.abb,state.name))


就像在这个例子中一样

我不确定您想要得到的结构。可能是
split(df$id,df$subject)
。这个答案绝对是头奖。这对我很有用。很好
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
my_new_list <- with(df, split(id, subject))