r - 如何使向量中的 dplyr::filter 在 Shiny 应用程序中工作

标签 r dplyr shiny

我有以下 Rmarkdown:

---
title: "Untitled"
runtime: shiny
output: 
  flexdashboard::flex_dashboard:
    theme: bootstrap 
    orientation: columns
    vertical_layout: scroll
---

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

Column {data-width=650}
-----------------------------------------------------------------------

```{r}

sidebarPanel( textInput("flowers", "flower name(s)", "virginica, setosa") )
mainPanel(
  renderPrint({
   flower_list <- unlist(lapply(strsplit(input$flowers, ",")[[1]], tolower))
   dat <- iris %>% filter(Species %in% flower_list)
   unique(dat$Species)
  })



)

```

基本上它的作用是获取用户的输入并返回列表 过滤后的名字。但似乎不起作用:

enter image description here

例如,主面板应返回两个值virginia setosa。 正确的做法是什么?

在控制台中它工作正常:


library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union
dat <- iris %>% 
  filter(Species %in% c("virginica","setosa"))
unique(dat$Species)
#> [1] setosa    virginica
#> Levels: setosa versicolor virginica

最佳答案

这是因为 virginia 之间有空格和setosasidebarPanel( textInput("flowers", "flower name(s)", "virginica, setosa") ) 。您可以通过修改代码来删除空格或删除空格,如下所示:

flower_list <- trimws(unlist(lapply(strsplit(input$flowers, ",")[[1]], tolower)))

关于r - 如何使向量中的 dplyr::filter 在 Shiny 应用程序中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44061817/

相关文章:

r - 检查 Posixct 时间是否在区间内

r - 使用R在GGPLOT2散点图上绘制两个数据向量

r - 将个体基因组间隔连接到种群区域

r - dplyr 计数变量的一个特定值的数量

r - 使用 dplyr/mutate 修复 R 中的不兼容类型错误

r - 循环基础 R 以获得每个区域的 pdf 图或该图的 ggplot 替代方案

R - 按分组行观察折叠数据

r - 基于文件路径的 Shiny 下载文件

r - DT 表未显示为 Shiny

html - 使用 HTML 的 R Shiny 输出的属性