我有一个对应于下面示例的数据框:
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
下拉菜单显示所有可用选项:
我只对列出主题和传递相应的数值感兴趣。
最佳答案
使用函数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/