Используйте значения вектора в качестве входных данных для flexdashboards - PullRequest
0 голосов
/ 04 апреля 2019

Я пишу интерактивный документ с shiny и flexdashboard и хотел бы выбрать значения из вектора (или столбца) в качестве входных данных для фильтрации набора данных.Рассмотрим пример ниже:

---
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")
    )})
```

В этом примере, например, вкладка позволяет выбрать одно из трех возможных значений столбца cyl для фильтрации набора данных.

Я бы хотелзамените это количеством кнопок , где я могу выбрать многие из этих значений для выбора (например, в этом случае будет три кнопки для значений 4, 6 и 8), так что все или некоторыеиз этих значений используются для фильтрации, но не обязательно только одно.Он предназначен для столбца с потенциально большим количеством значений, поэтому для этого может потребоваться полоса прокрутки.

Возможно ли добиться этого с помощью flexdashboard?До сих пор я не смог найти пример для этого в Rmarkdown галерее .

1 Ответ

1 голос
/ 04 апреля 2019

Вы можете редактировать настройки раскрывающегося списка, чтобы разрешить несколько вариантов выбора.

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

Вам также необходимо отредактировать коды сервера в соответствии с тем, что ваш выбор теперь является списком, а не значением.

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