2017-08-02 16 views
0

Rmarkdown文書内でShiny inlineを使用しようとしています。この単純な例では、3つのインプットを作成したいと思います。最初は4つの国(「GHA」、「RWA」、「TZA」、「UGA」)の1つ以上を選択できます。実際のアプリでは、選択した国で利用できる実際の風景に基づいて風景のオプションを更新したいと考えています。ただし、この例では、最初のビュー(「GHA」がデフォルトで選択されている場合)を「L01」〜「L06」にしたいだけです。次に、「countries」入力に変更が加えられた場合、ランドスケープオプションは( "hmm"、 "hum")に変更されます。私はいくつかのケースでは、対応オプションが優先されることを観察し、さまざまなバリエーションを試したことを読んだが、本質的にいつでもupdateSelectInputコマンドを含めると、アプリの風景のオプションを失う。どんな洞察にも感謝します!ここでupdateSelectInputをshiny withinと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

はあなたの問題を解決されたサンプルコードです:

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...文は良い作品だと思うので、私はupdateSelectInputを使用していません。具体的には、選択のいずれか(multiple = TRUEselectInputに設定した場合)がGHAと等しい場合は、L01からL02までの選択肢が与えられ、GHAと等しくない場合は選択肢がhmmとハムです。

** updateSelectInputまたはobserveEventなどを使用した場合は、それはui以外のサーバーに配置する必要があります。

+0

ありがとう、Mal_a! Rmarkdownでは、構文が少し異なり、あなたは私が理解しているところからサーバー/ユーザーの区別を使用しないので、それらがすべてスクリプト内にまとめられています。あなたのソリューションは素晴らしいですが、それらの行を削除してRMarkdownを修正するだけです。 – MPhD

関連する問題