我正在试验 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
似乎变量存在问题。我也想看到这个变量的过滤器。
有人有想法吗?谢谢你。