我正在尝试将因子级别输出转换为列表,以便可以为 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
谢谢。