#filter #shiny #flexdashboard #selectinput
#Фильтр #блестящий #flexdashboard #selectinput
Вопрос:
Я продолжаю получать ошибки при попытке отфильтровать базу данных в соответствии с выбранным входом. Я сделал этот действительно простой пример на основе набора данных iris, чтобы показать вам, ребята, мою проблему:
```{r}
library(flexdashboard)
library(tidyverse)
```
Sidebar {.sidebar}
=====================================
```{r}
fluidRow(
column(7,
selectInput("Species", "Choose a species",
choices = c("setosa", "versicolor", "virginica"))))
mydata <- reactive({
iris %>% filter(Species == input$Species)
})
```
Results
=====================================
```{r}
head(mydata)
```
Комментарии:
1.
mydata
является реактивным, поэтому его необходимо оценивать сmydata()
2. Хммм, я не уверен, что понял, не могли бы вы, пожалуйста, записать код?
Ответ №1:
Поскольку mydata
это реактивный параметр, вы должны оценить его с помощью mydata()
в реактивном контексте (например, renderDT
). Для получения дополнительной информации см. flexdashboard с shiny и руководство по shiny.
---
title: "test"
runtime: shiny
output:
flexdashboard::flex_dashboard:
orientation: columns
vertical_layout: fill
theme: bootstrap
---
```{r global, include = FALSE}
library(flexdashboard)
library(tidyverse)
library(DT)
```
Sidebar {.sidebar}
=====================================
```{r}
fluidRow(
column(7,
selectInput("Species", "Choose a species",
choices = c("setosa", "versicolor", "virginica"))))
mydata <- reactive({
iris %>% filter(Species == input$Species)
})
```
Results
=====================================
```{r}
renderDT({head(mydata())})
```
Комментарии:
1. Хорошо, большое вам спасибо за вашу помощь. Но если вместо отображения набора данных, как в моем примере, я использую его для проведения дополнительного анализа, например, для вычисления среднего значения Sepal. Длина
mean(mydata$Sepal.Lenght)
, как я мог это сделать?2. опять же, используйте
mydata()$Sepal.Length
в реактивном контексте, например, reactive:new_data <- reactive({mean(mydata()$Sepal.Lenght)})
. Взгляните на учебные пособия, которые я связал3. Еще раз спасибо, я ценю это.