2017-08-02 71 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