【问题标题】:Convert factor levels into lists for use in dynamic input in R Shiny将因子级别转换为列表以用于 R Shiny 中的动态输入
【发布时间】:2012-12-30 02:23:30
【问题描述】:

我正在尝试将因子级别输出转换为列表,以便为 R Shiny 中的 SelectInput 函数创建动态输入。

基本上,我导入了一个 CSV 文件,并希望使用 CSV 文件第一列中的“类别”(级别)在 SelectInput 中创建下拉列表。

所以,在 UI.R 中我有:

uiOutput("categoryPicker")

在 server.R 中我有:

datatwo <- read.csv(file="data2.csv",head=TRUE,sep=",")

然后,在“shinyServer(function(input, output)”部分(顺便说一下,“category”是 CSV 文件中的标题):

output$categoryPicker <- reactiveUI(function() {
categories <- levels(datatwo$category)
selectInput("category", "Category:", categories)
})

这不起作用,给我以下错误:

选择错误[[choiceName]]:下标越界

str(categories) 输出如下:

chr [1:22] "" "Cat1" "Cat2" "Cat3" "Cat4" "Cat5" ...

如果我执行“list(levels(datatwo$category)”,它只会给我一个下拉菜单,即整个 str(categories) 输出:

列表 1 $ : chr [1:22] "" "Cat1" "Cat2" "Cat3" ...

我试图以以下形式得到它(这样当 str(x) 完成时,输出将是):

X一览
$ Cat1: chr "Cat1"
$ Cat2: chr "Cat2"
$ Cat3: chr "Cat3"
...

但我不知道该怎么做。我也不确定为什么第一项是“”[空字符串]。我对 R 和 Shiny 还很陌生,所以请原谅我的无知,但我们将不胜感激。

顺便说一句,我一直在学习本教程: http://rstudio.github.com/shiny/tutorial/#dynamic-ui

谢谢。

【问题讨论】:

  • 请提供可重现的示例,而不是代码 sn-ps。
  • 先猜一猜,也许你需要在categories上使用as.list,而不是list

标签: r shiny


【解决方案1】:

我不知道列表中的名字是否重要,但这应该会给你你想要的:

setNames(as.list(categories), categories)

【讨论】:

    猜你喜欢
    • 2017-05-14
    • 2021-07-25
    • 2018-11-28
    • 1970-01-01
    • 2021-03-06
    • 2018-09-09
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    相关资源
    最近更新 更多