2014-06-06 27 views
2

我正在使用rShiny(shiny_0.9.1)R版本3.1.0(2014-04-10)和Platform:x86_64-w64- mingw32/x64(64位)。我在我的ui文件中使用selectInput方法從數據框中選擇兩列(「IND1_WATER」,「IND2_WATER」)。 這裏是工作示例代碼:R /閃亮的selectInput框 - 具有相同標籤的多個值的選擇列表

selectInput(inputId = "indicators", 
         multiple = TRUE, 
         label = "Select the list of indicators", 
         choices = list("Water stress" = "IND1_WATER", 
             "Water scarcity" = "IND2_WATER") 

不過,我想使用相同的名稱來標記兩列,並使用這些渲染圖。我嘗試過不同的選項,如「水分壓力」= c(「IND1_WATER」,「IND2_WATER」)或「水分壓力」= colnames(mydf)[6:7],但它們不起作用。它只需要第一個值。關於如何解決這個問題的任何想法?

胡安

+0

您可能正在討論一個尚未實現的功能:https://github.com/rstudio/shiny/issues/326 –

+0

這正是我所需要的。有關閃亮社區的任何更新?謝謝 – arevaju

+0

很高興知道。您可以通過碰撞問題來幫助提高優先級:) –

回答

2

每個「選擇」只能有一個值與它相關聯。如果您想要爲單個選擇返回多個值,則必須通過連接所需的值來僞造它。例如

selectInput(inputId = "indicators", 
    multiple = TRUE, 
    label = "Select the list of indicators", 
    choices = list("Water stress" = "IND1_WATER,IND2_WATER") 

然後在服務器端

indicators <- strsplit(input$indicators, ",")[[1]] 

如果有逗號,不是哪一個會工作。

+0

感謝MrFlick爲您的及時答覆,但我無法弄清楚實現這一點的方式。 strsplit函數僅適用於字符,但我的指標都是數字類型。如果您有任何其他建議,我將不勝感激。非常感謝。 – arevaju

+0

HTML select元素中的值始終是字符。所以'input $ indicators'應該總是一個字符。在'strsplit'之後,如果需要,你可以'as.numeric'。否則,我不明白你的問題。 – MrFlick

+0

我的第一個問題是Yihui解決的問題。第二個問題確實是爲單個選擇返回多個值。我已經把應用程序放在github上,所以它更容易與你分享。您可以使用runGitHub('shiny-app','Arevaju')運行應用程序。我的問題是在第二個選項卡中,我希望用戶能夠選擇Ind X並在2010,2020和2050中顯示3個值。目前指示器過濾器實際上並不工作,因爲它只顯示第一個指示器(Ind1)的數據。我真的堅持這一點。非常感謝您的大力支持。 – arevaju

2

隨着閃亮 CRAN上的最新版本(>= 0.10.1),你可以使用optgroup新的功能(見an example here)。在你的情況,

selectInput(inputId = "indicators", 
      multiple = TRUE, 
      label = "Select the list of indicators", 
      choices = list("Water stress" = c("IND1_WATER", "IND2_WATER"))) 

所以,請update.packages(ask = FALSE)如果你還沒有更新您的R封裝。

+0

我嘗試過,但沒有奏效。事實上,問題出在服務器端。 https://github.com/Arevaju/shiny-app/blob/master/server.r。在這個例子中,雷達圖應該顯示兩個指標IND1_WATER和IND2_WATER。 – arevaju

+0

主要問題是通過接口同時選擇兩列Ind1和Ind2,然後使用函數「Passdata2」將這兩列合併並傳遞給rCharts以顯示帶有這兩個指標的雷達圖表。謝謝! – arevaju

+0

我無法運行你的應用程序:我得到一個錯誤'normalizePath(directoryPath,mustWork = TRUE):error [1] =「」:沒有這樣的文件或目錄。我不熟悉rCharts包,我建議你問問Ramnath:https://github.com/ramnathv/rCharts我只能在運行應用程序後才能調查問題。目前,我完全不清楚你的問題是什麼。抱歉。 –

0

這是我最後一個問題的答案。爲了有多個值返回單個選擇的UI文件應該是這樣的:

selectInput(inputId = "indicator", 
       label = (HTML("<b>Select a list of indicators:</b>")), 
       multiple = TRUE, 
       selected = 'Water stress', 
       choices = list("Water stress" = "Water stress", "Water scarcity" = "Water scarcity")) 

在服務器文件應包含一些條件語句,以便能夠選擇多個列一個特定的值被選擇:

passData <- reactive({ 
    data <- data[data$Country %in% input$country_filter1 & 
        data$Year %in% input$year,] 
    rownames(data) = unique(data$NUTS_CODE) 
    if (input$indicator== 'Water stress') {col= 7:9} 
    if (input$indicator== 'Water scarcity') {col= 8:9} 
    data[,col] 
    }) 

我希望它可以幫助其他類似的問題。感謝我的同事Javier Martinez對他的寶貴貢獻!

相關問題