从 R Shiny 中的选定输入中过滤
Posted
技术标签:
【中文标题】从 R Shiny 中的选定输入中过滤【英文标题】:Filtering from selected input in R shiny 【发布时间】:2021-01-02 11:18:49 【问题描述】:尝试根据所选输入过滤数据库时,我不断收到错误消息。我根据 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)
```
【问题讨论】:
mydata
是一个响应式,因此必须使用 mydata()
评估它
嗯,我不知道我明白了,你能把代码写下来吗?
【参考方案1】:
由于mydata
是反应式,您必须在反应式上下文中使用mydata()
评估它(例如renderDT
)。有关详细信息,请参阅 flexdashboard with shiny 和 a shiny tutorial。
---
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()))
```
【讨论】:
好的,非常感谢您的帮助。但是,如果不是像我的示例那样显示数据集,而是使用它进行更多分析,例如计算 Sepal.Lenghtmean(mydata$Sepal.Lenght)
的平均值,我该怎么做?
再次,在反应式上下文中使用mydata()$Sepal.Length
,例如一个反应:new_data <- reactive(mean(mydata()$Sepal.Lenght))
。看看我链接的教程
再次感谢您,非常感谢。以上是关于从 R Shiny 中的选定输入中过滤的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 actionButton 更改 R Shiny 中 selectInput 上的选定值?