使用向量的值作为 flexdashboards 的输入

Use values of a vector as input for flexdashboards

我正在使用 shinyflexdashboard 编写交互式文档,并希望将向量(或列)中的 select 值作为输入来过滤数据集。考虑以下示例:

---
title: "Example"
runtime: shiny
theme: simplex
vertical_layout: fill
output:
  flexdashboard::flex_dashboard:
  orientation: rows
---

```{r setup, include=FALSE}
library(shiny)
library(tidyverse)
library(DT)
```

Sidebar {.sidebar}
======================

### Filtering options

```{r echo = FALSE}
selectInput("ncyl",
        label = "Value of cyl:",
        choices = mtcars %>% .$cyl %>% unique %>% sort,
        selected = 20)

```

Explore
======================

Row
----------------------

### Table

```{r echo = FALSE}
DT::renderDataTable({
  mtcars %>%
    dplyr::filter(cyl==input$ncyl) %>% 
    dplyr::select(cyl, disp) %>% 
    dplyr::arrange(-disp) %>% 
    DT::datatable(options = list(
      pageLength = 10,
      bPaginate = TRUE,
      scrollX = TRUE,
      sScrollY = '75vh',
      scrollCollapse = TRUE),
      extensions = list("Scroller")
    )})
```

在本例中,选项卡允许 select 列 cyl 的三个可能值之一来过滤数据集。

我想用一些 按钮 替换它,在这里我可以 select 许多这些值到 select (例如,在这个如果有三个按钮,分别对应值 4、6 和 8),那么这些值中的全部或部分用于过滤,但不一定只有一个。这旨在用于可能具有大量值的列,因此可能需要滚动条。

是否可以使用 flexdashboard 实现此目的?到目前为止,我还没能在 Rmarkdown gallery.

中找到这方面的示例

您可以编辑下拉框的设置以允许多项选择。

selectInput("ncyl",
        label = "Value of cyl:",
        choices = mtcars %>% .$cyl %>% unique %>% sort,
        multiple = T)

您还需要根据您的选择现在是列表而不是值这一事实来编辑服务器代码。

mtcars %>%
    dplyr::filter(cyl%in%input$ncyl) %>%