2017-08-31 225 views
0

我想在flexdashboard文檔中使用Shiny做出反應selectInput。創建反應selectInput - 與閃亮的flexdashboard

  1. 我的第一個selectInput選擇海洋公園的區域類型。

    selectInput("Zone", label = "Marine Park Zoning:", 
          choices = c("All", levels(EoTR$MarineParkZone)), selected = "All") 
    
  2. 然後我使用該輸入來創建與僅在步驟中選擇的區域1.

    zone.choices = reactive({ 
        if (input$Zone=="All"){ 
        select(EoTR, ReefName, MarineParkZone, MarineParkMgmtSection) 
        }else{ 
        select(EoTR, ReefName, MarineParkZone, MarineParkMgmtSection)%>% 
        filter(MarineParkZone==input$Zone)} 
    }) 
    
  3. 然後我嘗試使用該反應性的數據幀,以限定我的選擇用於反應數據幀接下來selectInput

    reactive({ 
    selectInput("Reef", label = "Priority Reef:", 
         choices = zone.choices()$ReefName, selected = "Arlington Reef (16-064)") 
    }) 
    

當我運行該文件我本身cond輸入會顯示一堆代碼而不是選擇菜單,因此所有基於該選擇器的進程都會失敗。

下面是一些代碼,將重現該問題

--- 
title: "Untitled" 
output: 
    flexdashboard::flex_dashboard: 
    orientation: columns 
    vertical_layout: fill 
runtime: shiny 
--- 
```{r} 
library(flexdashboard) 
library(dplyr) 

EoTR = data.frame(ReefName=c("Reef1", "Reef2", "Reef3", "Reef4"), 
       MarineParkZone=c("Fished", "Fished", "Un-Fished", "Un-Fished")) 

selectInput("Zone", label = "Marine Park Zoning:", 
      choices = c("All", levels(EoTR$MarineParkZone)), selected = "All") 

zone.choices = reactive({ 
    if (input$Zone=="All"){ 
    select(EoTR, ReefName, MarineParkZone) 
    }else{ 
    select(EoTR, ReefName, MarineParkZone)%>% 
    filter(MarineParkZone==input$Zone)} 
}) 

reactive({ 
selectInput("Reef", label = "Priority Reef:", 
     choices = zone.choices()$ReefName, selected = "Reef1") 
}) 
``` 

我知道這可能與我如何定義我的反應輸入一些愚蠢的,但我真的很感激有這方面的幫助。

乾杯,

山姆

回答

0

這裏是你的解決方案:

--- 
title: "Untitled" 
output: 
    flexdashboard::flex_dashboard: 
    orientation: columns 
    vertical_layout: fill 
runtime: shiny 
--- 
```{r} 
library(flexdashboard) 
library(dplyr) 

EoTR = data.frame(ReefName=c("Reef1", "Reef2", "Reef3", "Reef4"), 
       MarineParkZone=c("Fished", "Fished", "Un-Fished", "Un-Fished")) 

selectInput("Zone", label = "Marine Park Zoning:", 
      choices = c("All", levels(EoTR$MarineParkZone)), selected = "All") 

zone.choices = reactive({ 
    if (input$Zone=="All"){ 
    EoTR 
    }else{ 
    EoTR %>% 
    filter(MarineParkZone==input$Zone)} 
}) 


renderUI({selectInput("Reef", label = "Priority Reef:", 
     choices = zone.choices()$ReefName, selected = "Reef1")}) 

``` 

的問題是與你的selectInput("Reef"...),你已經將其設置爲反應(這是inccorect)- - >您應該將其呈現爲UI對象(renderUI)。