2017-08-02 67 views
0

我想在Rmarkdown文檔內使用Shiny內聯。在這個簡單的例子中,我想創建3個輸入:第一個允許您選擇4個國家中的一個或多個(「GHA」,「RWA」,「TZA」,「UGA」)。在真實應用中,我希望根據所選國家/地區提供的實際景觀更新景觀選項。但是,在這個例子中,我只是想將初始視圖(默認情況下選擇「GHA」)設置爲「L01」至「L06」。然後,如果對「國家/地區」輸入進行了任何更改,則橫向選項將更改爲(「hmm」,「嗡嗡聲」)。我已經讀過,在某些情況下觀察vs反應選項可能是首選,並嘗試了各種變化,但基本上任何時候我包含updateSelectInput命令,我失去了應用程序中的任何景觀選項。感謝任何見解!updateSelectInput與閃亮內和Rmarkdown文檔

library(shiny) 
    selectInput("countries", 'Country', 
       list("GHA","RWA","TZA","UGA"), 
       multiple=TRUE, 
       selectize=TRUE, 
       selected="GHA") 
    checkboxGroupInput("landscapes", label=("Landscape"), 
       choices=c("L01","L02","L03","L04","L05","L06"), selected="L01") 
    radioButtons("checkPlot", label = ("Factors"), 
         choices=c("Gender of Household Head", "Water Source(s)"), 
         selected = "Water Source(s)") 
    observeEvent(input$countries, { 
    updateSelectInput(session, "landscapes", choices=c("hmm","hum")) }) 

回答

0

這裏是一個被解決您的問題示例代碼:我沒有,因爲在這種情況下使用updateSelectInput

library(shiny) 
library(DT) 
shinyApp(
    ui = fluidPage(
    selectInput("countries", 'Country', 
       list("GHA","RWA","TZA","UGA"), 
       multiple=TRUE, 
       selectize=TRUE, 
       selected="GHA"), 
    uiOutput("checkbox") 
), 
    server = function(input, output) { 

    output$checkbox <- renderUI({ 
     choice <- if(any(input$countries == "GHA")){ 
     choice <- c("L01","L02","L03","L04","L05","L06") 
     }else{ 
     choice <- c("hmm","hum")} 
     checkboxGroupInput("landscapes", label=("Landscape"), choices = choice, selected = choice[1]) 

    }) 

    } 
) 

我覺得if...else...發言效果更好。詳細的代碼表明,如果任何選擇(如你在selectInput中設置multiple = TRUE)等於GHA,那麼它將給出從L01到L02的選擇,如果它不等於GHA,則選擇是Hmm和哼聲。

**只是爲了complitness,如果你使用updateSelectInputobserveEvent等它應該被放置在服務器不在UI。

+0

謝謝,Mal_a!在Rmarkdown中,語法有點不同,你不使用server/ui的區別(從我的理解中),這就是爲什麼他們都在我的腳本中。不過,您的解決方案對我來說非常適用,只需刪除這些行即可修改RMarkdown。 – MPhD