我想让这个简单的应用程序正常工作。假设允许用户在dplyr::starwars
数据集中选择任意数量的变量,并显示这些变量的不同组合。
library(shiny)
library(tidyverse)
ui <- fluidPage(
titlePanel("Use selectize with dplyr"),
selectizeInput("distinct_vars", "Select distinct", choices = names(starwars), multiple = T),
dataTableOutput("table")
)
server <- function(input, output) {
output$table <- renderDataTable({
req(input$distinct_vars)
arg_list <- rlang::parse_quosures(paste(input$distinct_vars, collapse = ";"))
starwars %>%
distinct(!!arg_list)
})
}
shinyApp(ui = ui, server = server)
我遇到了distinct(!!arg_list)
行的问题。我想将参数作为列表传递给distinct
函数。如果我用distinct(!!arg_list[[1]])
替换此行,则应用程序可以正常工作,但仅适用于所选的第一个变量。我想允许用户选择任意数量的变量,并将用户的选择传递给dplyr函数。
答案 0 :(得分:3)
对于多个变量,我们需要!!!
而不是!!
ui <- fluidPage(
titlePanel("Use selectize with dplyr"),
selectizeInput("distinct_vars", "Select distinct", choices = names(starwars), multiple = T),
dataTableOutput("table")
)
server <- function(input, output) {
output$table <- renderDataTable({
req(input$distinct_vars)
arg_list <- rlang::parse_quosures(paste(input$distinct_vars, collapse = ";"))
starwars %>%
distinct(!!! arg_list)
})
}
shinyApp(ui = ui, server = server)
-output