使用R中的列名呈现因子

时间:2016-01-31 14:34:01

标签: r shiny

我正在构建一个闪亮的应用程序。我想为每个选择的列渲染因子。为此,我有两个selectInput小部件。第一个呈现列名称,第二个呈现第一个小部件选择的列的因子。我写的代码不是渲染因素,而是在闪亮的环境之外工作。代码如下:

第一次选择输入:

observe({
       updateSelectInput(session, "filt", choices = sort(as.character(colnames(s()))))    
   })

2nd selectInput - 返回'filt'selectInput。

中所选列的因子
observe({
           updateSelectInput(session, "filt1", choices = sort(as.character(unique(s()$input$filt)))) 
   })

可重复的表格:

structure(list(Gender = structure(c(2L, 1L, 2L, 2L, 2L), .Label = c("Female", 
"Male"), class = "factor"), AGE = c(20L, 20L, 15L, 16L, 13L), 
    BOTTLE_CNT = c(3L, 0L, 0L, 1L, 2L), QUALIFICATION_DESC = structure(c(2L, 
    2L, 1L, 2L, 2L), .Label = c("12th and below", "Graduation"
    ), class = "factor")), .Names = c("Gender", "AGE", "BOTTLE_CNT", 
"QUALIFICATION_DESC"), class = "data.frame", row.names = c(NA, 
-5L))

我想要的是,如果我在第一个selectInput中选择Gender,则应该在第二个selectInput中自动呈现选项Male和Female。

我没有得到所呈现的因素。不知道我哪里出错了。

1 个答案:

答案 0 :(得分:0)

将第一个selectInput的ID添加到第二个观察:

observe({
   input$filt, updateSelectInput(
                   session, "filt1",
                   choices = sort(as.character(unique(s()$input$filt)))) 
})

这可能会有所帮助。