2016-04-20 154 views
0

不工作我想從數據集中選擇多個列,然後在選定的列中有多個UNIQUE值的選擇。現在獨特的功能似乎並沒有工作。它重複了列選擇具有最多唯一值的值。唯一值在R閃亮selectInput

ui<-shinyUI(fluidPage(fluidRow(column(width = 4, 

    uiOutput("variants"), 
    uiOutput("variants2") 
    ) 
))) 

server <-shinyServer(function(input, output, session) { 

    df<-somedata 


    output$variants <- renderUI({ 
     selectInput ("choose_columns", 
         "Choose Attribute", 
         sort(unique(names(df)), decreasing = FALSE), 
         selected="", 
         multiple =TRUE) 

    }) 


    dat<-reactive({ 
    unique(df[,input$choose_columns]) 
    }) 



    output$variants2 <- renderUI({ 
    selectInput ('further', 
        'Choose Attribute(s) Value(s)', 
        dat(), 
        selected="", 
        multiple = TRUE) 
    }) 



}) 

shinyApp(ui, server) 

回答

0

您的代碼似乎適用於我。我以mtcars數據集爲例。我唯一的建議是在以外(之前)server代碼。這樣,每次用戶修改輸入時都不會重新加載數據。下面是我的代碼以mtcars

ui<-shinyUI(
    fluidPage(
    fluidRow(
     column(width = 4, 
     uiOutput("variants"), 
     uiOutput("variants2") 
    ) 
    ) 
) 
) 

library(datasets) 
data("mtcars") 

server <- shinyServer(function(input, output, session) { 

    output$variants <- renderUI({ 
    selectInput ("choose_columns", 
     "Choose Attribute", 
     sort(unique(names(mtcars)), decreasing = FALSE), 
     selected="", 
     multiple =TRUE) 
    }) 

    dat<-reactive({ 
    unique(mtcars[,input$choose_columns]) 
    }) 

    output$variants2 <- renderUI({ 
    selectInput('further', 
     'Choose Attribute(s) Value(s)', 
     dat(), 
     selected="", 
     multiple = TRUE) 
    }) 
}) 

shinyApp(ui, server) 
+0

甚至有外的數據集的服務獨特的功能不工作像我想它。在mtcars中選擇'cyl'和'hp。我想'選擇屬性值(s)下拉到'cyl'下只有'6','4'和'8'。現在它有多個。 – eagermathperson

+0

啊,我明白你在說什麼了。看來,如果閃亮默認爲兩個選定變量的唯一值的最小公倍數。不知道爲什麼這是或如何擺脫它。也許有一種方法是爲選中的每個'choose_columns'' selectInput'創建單獨的'進一步''selectInput'。 –

0

嘗試打印DAT(),你會看到值可以重複每列內,但絕不會整行等於另一個。 selectInput只是按列打破dat()。獲得通過在selectInput列唯一值的方法是使用:

dat<-reactive({ 
    lapply(mtcars[,input$choose_columns], unique) 
}) 
+0

sapply作品而非lapply!謝謝 :) – eagermathperson