我有一个 flexdashboard 文档runtime: shiny
(我在这里发布了应用程序https://arie.shinyapps.io/reproducible_example/并嵌入了代码,但也想将代码放在下面,以防应用程序超出其在 shinyapps.io 上的分配使用量):
---
title: "Example"
runtime: shiny
output:
flexdashboard::flex_dashboard:
source_code: embed
---
给定以下示例数据集:
```{r setup, include=FALSE}
library(flexdashboard)
library(tidyverse)
df <- tibble(name = c("peter", "paul", "mary"),
value = c(1:3))
```
我希望能够从以下用户界面中进行多项选择:
Column {data-width=250, .sidebar}
-----------------------------------------------------------------------
```{r}
# creates interface
selectInput("name_input", label = "Name", choices = df$name,
selected = NULL, multiple = TRUE, selectize = TRUE)
```
并对选择进行 ggplot “反应”。所以我做了一个反应数据集:
```{r}
# reactive data
df_reactive <- reactive(df[df$name == input$name_input,])
```
并创建以下图:
Column {data-width=750}
-----------------------------------------------------------------------
### Chart B
```{r}
renderPlot(
ggplot(df_reactive(), aes(x = input$name_input, y = value) ) +
geom_col()
)
```
现在,当 IRun Document
和 select first peter
、 thenpaul
和 thenmary
时,情节的反应完全符合预期:每次添加名称时都会添加一个条形图。例如,当我首先选择paul
然后peter
抛出错误时,就会出现问题Aesthetics must be either length 1 or the same as the data (2): x, y
。
在静态图表的上下文中,该错误对我来说是有意义的,但我对为什么选择名称的顺序很重要以及如何解决它感到困惑。