在闪亮的应用程序中选择多个输入时,为啥错误取决于选择输入的顺序?
Posted
技术标签:
【中文标题】在闪亮的应用程序中选择多个输入时,为啥错误取决于选择输入的顺序?【英文标题】:When selecting multiple inputs in a shiny app, why does the error depend on the order that the inputs were selected?在闪亮的应用程序中选择多个输入时,为什么错误取决于选择输入的顺序? 【发布时间】:2017-10-27 17:06:19 【问题描述】:我有一个带有 runtime: shiny
的 flexdashboard 文档(我在此处发布了应用程序 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()
)
```
现在,当我 Run Document
并首先选择 peter
,然后选择 paul
,然后选择 mary
时,情节的反应完全符合预期:每次添加名称时都会添加一个条形。例如,当我先选择paul
然后选择peter
时,就会出现问题,这会引发错误Aesthetics must be either length 1 or the same as the data (2): x, y
。
在静态图表的上下文中,这个错误对我来说是有意义的,但我对为什么选择名称的顺序很重要以及如何解决它感到困惑。
【问题讨论】:
是否应该将df_reactive <- reactive(df[df$name == input$name_input,])
替换为df_reactive <- reactive(df[df$name %in% input$name_input,])
?
是的!非常感谢!
很高兴它有帮助!我会把它作为答案发布,..
【参考方案1】:
问题出在:
df_reactive <- reactive(df[df$name == input$name_input,])
如果length(input$name_input)
df$name 中的每个元素是否包含在input$name_input
中。幸运的是,在 R 中有一个快捷方式,因此您不必使用 for 循环或 sapply()
,...
就像我在 cmets 中写的那样:df_reactive <- reactive(df[df$name %in% input$name_input,])
也可以。
有关符号的更多详细信息,我会参考现有答案,因为那时答案将变得更加重复。
==
和 %in%
之间的区别在这里解释:
difference between `%in%` VS `==`
【讨论】:
以上是关于在闪亮的应用程序中选择多个输入时,为啥错误取决于选择输入的顺序?的主要内容,如果未能解决你的问题,请参考以下文章