【问题标题】:filtering based on user inputs in Shiny is not work在 Shiny 中基于用户输入的过滤不起作用
【发布时间】:2020-12-05 21:58:35
【问题描述】:

这里是 Shiny 的新用户。这是一个非常简单的模式。但它不起作用,也没有显示任何错误。

当我使用子集函数时,结果相同。

这是我的代码:

library(shiny)
library(dplyr)

# Define UI for application that draws a histogram
ui <- fluidPage(

    sidebarLayout(
        sidebarPanel(
            selectInput("variable", "Variable:",colnames(iris))
        ),

        mainPanel(
            tableOutput("table")
        )
    )
)

server <- function(input, output) {

    output$table <- renderTable({
        
        iris %>% dplyr::filter(input$variable>=5)
        
        
    })
}

# Run the application 
shinyApp(ui = ui, server = server)

【问题讨论】:

    标签: r shiny


    【解决方案1】:

    input$variable 是一个字符,您可以在此处使用.data 代词将其用作列值。

    library(dplyr)
    library(shiny)
    
    ui <- fluidPage(
      sidebarLayout(
        sidebarPanel(
          varSelectInput("variable", "Variable:",iris)
        ),
        mainPanel(
          tableOutput("table")
        )
      )
    )
    
    server <- function(input, output) {
      output$table <- renderTable({
        iris %>% dplyr::filter(.data[[input$variable]]>=5)
      })
    }
    
    # Run the application 
    shinyApp(ui = ui, server = server)
    

    【讨论】:

    • 谢谢,它的工作。我找到了一个更好的方法来找出 link 。使用 rlang::!!()
    猜你喜欢
    • 2018-12-29
    • 1970-01-01
    • 1970-01-01
    • 2019-11-24
    • 1970-01-01
    • 2017-03-16
    • 1970-01-01
    • 2014-05-10
    • 2015-05-19
    相关资源
    最近更新 更多