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

Kon*_*rad 3 r list dataframe shiny

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

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

我想将此数据框转换为可以方便地实现的列表对象selectInput:

selectInput("subject", "Subject",
            choices = #my_new_list )
Run Code Online (Sandbox Code Playgroud)

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

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

df <- data.frame(lapply(df, as.character),
                         stringsAsFactors = FALSE)
df <- as.list(df)
Run Code Online (Sandbox Code Playgroud)

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

选择输入预览

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

小智 6

使用功能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
Run Code Online (Sandbox Code Playgroud)

连同功能with:

my_new_list <- with(df, split(id, subject))
Run Code Online (Sandbox Code Playgroud)