3

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

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

所以,在 UI.RI 中有:

uiOutput("categoryPicker")

在 server.RI 中有:

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) 输出如下:

字符 [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

谢谢。

4

1 回答 1

4

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

setNames(as.list(categories), categories)
于 2013-01-15T22:45:55.913 回答