【发布时间】:2018-02-09 02:03:19
【问题描述】:
我正在尝试在 flexdashboard 文档中使用 Shiny 制作反应式 selectInput。
-
我的第一个
selectInput选择海洋公园的区域类型。selectInput("Zone", label = "Marine Park Zoning:", choices = c("All", levels(EoTR$MarineParkZone)), selected = "All") -
然后我使用此输入创建一个反应性数据框,其中仅包含在步骤 1 中选择的区域。
zone.choices = reactive({ if (input$Zone=="All"){ select(EoTR, ReefName, MarineParkZone, MarineParkMgmtSection) }else{ select(EoTR, ReefName, MarineParkZone, MarineParkMgmtSection)%>% filter(MarineParkZone==input$Zone)} }) -
然后我尝试使用这个响应式数据框来定义我对下一个
selectInput的选择reactive({ selectInput("Reef", label = "Priority Reef:", choices = zone.choices()$ReefName, selected = "Arlington Reef (16-064)") })
当我运行文档时,我的第二个输入显示一堆代码而不是选择菜单,因此基于该选择器的所有进程都会失败。
下面是一些可以重现问题的代码
---
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")
})
```
我知道我定义响应式输入的方式可能有些愚蠢,但我非常感谢任何帮助。
干杯,
山姆
【问题讨论】:
标签: r shiny r-markdown flexdashboard