首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >筛选闪亮的selectizeInput并在数据集中没有满足输入的观察时显示空白图

筛选闪亮的selectizeInput并在数据集中没有满足输入的观察时显示空白图
EN

Stack Overflow用户
提问于 2018-09-13 09:04:55
回答 1查看 444关注 0票数 0

在我的柔性仪表板上闪亮的应用程序中,我使用的selectizeInput()有三个选项:“英语”、“西班牙语”和“其他”。在我的玩具数据集中,没有观察到变量lang的值"other“。因此,当只在输入栏中选择 "other“时,R返回一个计算错误:

在需要真/假的地方缺少值。

造成这种情况的原因是“第1页”部分中管道的以下一行:

filter(if(is.null(input$foo)) (new==1) else (lang %in% input$foo)) %>%

当数据集中没有使用输入值的观察时,显示空白图的正确方法是什么?

代码语言:javascript
运行
AI代码解释
复制
---
title: "test"
output: 
  flexdashboard::flex_dashboard:
    theme: bootstrap
runtime: shiny
---

```{r setup, include=FALSE}

图书馆(柔性仪表板)

图书馆(Tidyverse)

图书馆(Tibbletime)

图书馆(有向图)

图书馆(Magrittr)

图书馆(Xts)

代码语言:javascript
运行
AI代码解释
复制
```{r global, include=FALSE}

生成数据

set.seed(1)

dat <- data.frame(date = seq(as.Date("2018-01-01") )

代码语言:javascript
运行
AI代码解释
复制
                           as.Date("2018-06-30"), 
代码语言:javascript
运行
AI代码解释
复制
                           "days"),
代码语言:javascript
运行
AI代码解释
复制
                sex = sample(c("male", "female"), 181, replace=TRUE),
代码语言:javascript
运行
AI代码解释
复制
                lang = sample(c("english", "spanish"), 181, replace=TRUE),
代码语言:javascript
运行
AI代码解释
复制
                age = sample(20:35, 181, replace=TRUE))

dat <- sample_n(dat,80)

代码语言:javascript
运行
AI代码解释
复制
Sidebar {.sidebar}
=====================================

```{r}

selectizeInput(

‘'foo',标签=空,

选项=c(“英语”、“西班牙语”、“其他”)、

multiple = TRUE

)

代码语言:javascript
运行
AI代码解释
复制
Page 1
=====================================

```{r}

总数<-反应性({

dat %>%

代码语言:javascript
运行
AI代码解释
复制
mutate(new = 1) %>%
代码语言:javascript
运行
AI代码解释
复制
arrange(date) %>%
代码语言:javascript
运行
AI代码解释
复制
filter(if(is.null(input$foo)) (new==1) else (lang %in% input$foo)) %>%

时间序列分析

tibbletime::as_tbl_time(index = date) %>% #转换为tibble对象

代码语言:javascript
运行
AI代码解释
复制
select(date, new) %>%
代码语言:javascript
运行
AI代码解释
复制
tibbletime::collapse_by("1 week", side = "start", clean = TRUE) %>%
代码语言:javascript
运行
AI代码解释
复制
group_by(date) %>%
代码语言:javascript
运行
AI代码解释
复制
mutate(total = sum(new, na.rm = TRUE)) %>%
代码语言:javascript
运行
AI代码解释
复制
distinct(date, .keep_all = TRUE) %>%
代码语言:javascript
运行
AI代码解释
复制
ungroup() %>%
代码语言:javascript
运行
AI代码解释
复制
# expand matrix to include weeks without data
代码语言:javascript
运行
AI代码解释
复制
complete(
代码语言:javascript
运行
AI代码解释
复制
  date = seq(date[1], date[length(date)], by = "1 week"),
代码语言:javascript
运行
AI代码解释
复制
  fill = list(total = 0)
代码语言:javascript
运行
AI代码解释
复制
)

})

转换为xts

totals_ <-反应性({

代码语言:javascript
运行
AI代码解释
复制
totals <- totals()
代码语言:javascript
运行
AI代码解释
复制
xts(totals, order.by = totals$date)

})

绘图

renderDygraph({

总数<-总计()

有向图(totals_,“总计”) %>%

代码语言:javascript
运行
AI代码解释
复制
dyRangeSelector() %>%
代码语言:javascript
运行
AI代码解释
复制
dyOptions(useDataTimezone = FALSE,
代码语言:javascript
运行
AI代码解释
复制
          stepPlot = TRUE,
代码语言:javascript
运行
AI代码解释
复制
          drawGrid = FALSE,
代码语言:javascript
运行
AI代码解释
复制
          fillGraph = TRUE) 

})

代码语言:javascript
运行
复制
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-13 09:16:57

这样做的一种方法是在运行代码块之前使用shiny::req函数检查需求。

如果你加上:

代码语言:javascript
运行
AI代码解释
复制
req(dat$lang %in% input$foo)

在运行totals <- reactive({表达式的其余部分之前,它将检查input$foo的值是否在dat$lang中。如果找不到,那么操作将被静默地停止。没有错误将显示,情节将保持空白。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52318561

复制
相关文章

相似问题

在Google电子表格中筛选行

10

更改Google电子表格中的排序筛选器

20

Google电子表格高级条件筛选器

10

自定义Google电子表格中的筛选器

10

Google电子表格中的多用户筛选问题

50
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文