【问题标题】:Filtering from selected input in R shiny从 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() 评估它
  • 嗯,我不知道我明白了,你能把代码写下来吗?

标签: filter shiny flexdashboard selectinput


【解决方案1】:

由于mydata 是反应式,您必须在反应式上下文中使用mydata() 评估它(例如renderDT)。有关详细信息,请参阅 flexdashboard with shinya 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.Lenght mean(mydata$Sepal.Lenght) 的平均值,我该怎么做?
  • 再次,在反应式上下文中使用mydata()$Sepal.Length,例如一个反应:new_data &lt;- reactive({mean(mydata()$Sepal.Lenght)})。看看我链接的教程
  • 再次感谢您,非常感谢。
猜你喜欢
  • 2016-06-14
  • 2019-08-21
  • 2021-02-10
  • 1970-01-01
  • 2020-10-14
  • 1970-01-01
  • 2020-08-15
  • 2017-03-16
  • 2016-06-03
相关资源
最近更新 更多