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))