我正在创建一个闪亮的筛选应用程序,它允许用户在预定的数据帧上键入 R 命令,例如filter
和。mutate
就个人而言,我认为最用户友好的方法是使用包含筛选参数的空白数据框列,用户可以在其中输入命令,例如filter(mpg >= 21)
或mutate(cyl_sq = cyl^2)
使用mtcars
数据集作为示例。
显示预期功能的简单应用程序:
library(shiny)
library(shinydashboard)
library(DT)
library(dplyr)
# Header ------------------------------------------------
header <- dashboardHeader(title = "Example Screening")
# Sidebar ------------------------------------------------
sidebar <- dashboardSidebar()
# Body ------------------------------------------------
body <-
dashboardBody(
fluidRow(
column(6,h3("Screening Parameters")),
column(6,h3("Filtered/Modified Results"))),
fluidRow(
column(6,DT::dataTableOutput("screening_params")),
column(6,DT::dataTableOutput("filtered_results")))
)
# APP ------------------------------------------------
shinyApp(ui <- dashboardPage(
header,
sidebar,
body
),
# Server ----------------------------------------------------------
shinyServer(function(input,output){
output$screening_params <- renderDataTable({
tibble(params = c("filter(mpg >= 21)",
"mutate(cyl_sq = cyl^2)",
rep_len(NA_character_,8))) %>%
DT::datatable(rownames = F,
editable = T)
})
output$filtered_results <- renderDataTable({
mtcars %>%
# input$screening_params
DT::datatable()
})
}))
我愿意使用DT
或rhandsontable
或任何人能想到的替代方案。不幸的是,您似乎无法在 中获取已编辑的表值DT
,但希望它为我所追求的提供了一个很好的示例。
我已经尝试了我能想到的所有 quosures 和映射函数的组合,但都无济于事。
有人有想法么?