1

我正在试验 R 中的 datamods 包。

包可以在这里找到: https ://dreamrs.github.io/datamods/reference/index.html

我的目标是为所有指定的变量(在vars变量中)动态创建交互式过滤器。我正在使用 mtcars 数据集进行测试。

我的代码:

library(shiny)
library(shinyWidgets)
library(datamods)
library(ggplot2)
library(dplyr)


ui <- fluidPage(
  tags$h2("Filter data.frame"),
  
  fluidRow(
    column(
      width = 3,
      filter_data_ui("filtering", max_height = "1000px")
    ),
    column(
      width = 9,
      DT::dataTableOutput(outputId = "table"),
      plotOutput("plot")
    )
  )
)

server <- function(input, output, session) {
  
  mtcars_1 <- mtcars %>%
    mutate(type = row.names(mtcars)) %>%
    select(type, everything())
  
  data <- reactive({
    mtcars_1
  })
  
  vars <- reactive({
    names(mtcars_1)[1:4]
  })
  
  
  res_filter <- filter_data_server(
    id = "filtering",
    data = data,
    vars = vars,
    widget_char = "picker",
    widget_num = "slider",
    widget_date = "slider",
    label_na = "Missing"
  )
  
  
  output$table <- DT::renderDT({
    res_filter$filtered()
  }, options = list(pageLength = 5))
  
  
  output$plot <- renderPlot({
    ggplot(res_filter$filtered(), aes(cyl, mpg)) +
      geom_point()
  })
  
}

if (interactive())
  shinyApp(ui, server)

我不断收到错误“要写入的文本必须是长度为 1 的字符向量”。

当我将定义更改vars

  vars <- reactive({
    names(mtcars_1)[2:4]
  })

错误消失。我得到了想要的输出:

在此处输入图像描述

type似乎变量存在问题。我也想看到这个变量的过滤器。

有人有想法吗?谢谢你。

4

0 回答 0