首页 > 解决方案 > Shiny R:按输入变量过滤数据集

问题描述

我试图通过输入值过滤我的数据集。我创建了一个shiny::selectInput()具有三个值的选项。然而,无论 Input 取什么值,它似乎都被 忽略dyplr::filter()而不是被忽略dyplr::select()。这里的区别在哪里,我能做些什么来实现我想要的,即我的数据集被选择的变量正确过滤shiny::selectInput()

library(shiny)
library(tidyverse)
library(reactable)

ui = fluidPage(
    selectInput(inputId = "var", label = "Select", choices = c("height", "mass", "birth_year")),
    reactableOutput(outputId = "table")
  )

server = function(input, output, session){

  output$table = renderReactable({
  starwars %>%
      select(input$var) %>%
      filter(between(input$var, 50, 100)) %>%
      reactable(data = .)  
  })
}

shinyApp(ui, server)

标签: rshiny

解决方案


整洁的评估见 Hadley Wickhams 声明

library(shiny)
library(tidyverse)
library(reactable)

ui = fluidPage(
    selectInput(inputId = "var", label = "Select", choices = c("height", "mass", "birth_year")),
    reactableOutput(outputId = "table")
  )

server = function(input, output, session){

  output$table = renderReactable({
  starwars %>%
      select(input$var) %>%
      filter(between(.data[[input$var]], 50, 100)) %>%
      reactable(data = .)  
  })
}

shinyApp(ui, server)

推荐阅读