r - Shiny - 将用户选择的观察添加/附加到观察列表以进行分析
问题描述
我正在开发的 Shiny 应用程序的用户界面应该以下列方式工作:
- 用户在应用一组过滤器后找到所需的观察结果。
- 用户单击“添加”操作按钮,因此将选定的观察结果添加到要分析的观察结果的运行列表/向量/等中。
- 用户修改过滤器以查找也将包括在内的其他观察结果。
- 根据用户的需要多次循环回到步骤 1。
我似乎找不到一种方法来保存要分析的观察列表。在我附加的示例中,“观察 ID”是汽车型号的名称(使用 mtcars)。我也没有包括任何数据分析,因为我认为这没有必要。本质上,整个数据集 (mtcars) 应该在反应式环境中使用 dplyr 进行过滤,以仅包含所选观察的运行列表。
这是代码:
data("mtcars")
mtcars$model <- rownames(mtcars)
ui <- fluidPage(
titlePanel("sample"),
sidebarLayout(
sidebarPanel(
uiOutput("disp"),
uiOutput("qsec"),
uiOutput("model"),
actionButton("add", "Add"),
uiOutput("selectedModel")
),
mainPanel(
plotOutput("data_analysis")
)
)
)
server <- function(input, output) {
output$disp <- renderUI({
selectInput(
"disp_sel",
"Select disp:",
unique(mtcars$disp),
selected = NULL,
multiple = T,
selectize = T
)
})
output$qsec <- renderUI({
temp = mtcars
if (!is.null(input$disp_sel)){temp = temp %>% filter(disp %in% input$disp_sel)}
selectInput(
"qsec_sel",
"Select qsec:",
unique(temp$qsec),
selected = NULL,
multiple = T,
selectize = T
)
})
output$model <- renderUI({
temp = mtcars
if (!is.null(input$disp_sel)){temp = temp %>% filter(disp %in% input$disp_sel)}
if (!is.null(input$qsec_sel)){temp = temp %>% filter(qsec %in% input$qsec_sel)}
selectInput(
"model_sel",
"Select model:",
unique(temp$model),
selected = NULL,
multiple = T,
selectize = T
)
})
output$selectedModel <- renderUI({
req(input$add)
selectInput(
"list_of_selections",
"Selected models:",
unique(mtcars$model),
selected = NULL, # this should change when "Add" is pressed
multiple = T,
selectize = T
)
})
r_data = eventReactive(input$add,{
mtcars %>% filter(model %in% input$list_of_selections)
})
output$data_analysis <- renderPlot({
# do something with r_data (filtered data)
})
}
# Run the application
shinyApp(ui = ui, server = server)
我研究了模块化代码、反应式列表和其他我什至不记得的东西......非常感谢任何帮助。
解决方案
找到了答案。包括我
selected <- reactiveValues(s = NULL)
observeEvent(input$add,{selected$s = c(selected$s, input$model})
进入服务器部分。然后将选定的模型存储在selected$s
.
推荐阅读
- elixir - 如何从 Elixir 中的 URL 中提取文件名?
- node.js - 将 JSON 转换为 Adob.recordset 或从 webservice 检索 Adob.recordset
- java - Hibernate set null 没有保存,则数据已被删除
- amazon-web-services - Aws cloudfront - 是否可以对流量进行分析
- python - Instagram 抓取 [python]
- perl - 如何在一行中将命令行参数传递给 perl 脚本文件
- git - git/macos:检出 png 图像失败
- javascript - CSS - 在 ul 中使用 flex-direction 附加 li 标签:column-reverse 无法正常工作
- cryptography - Sage,Goppa 代码:无法创建具有大参数的解码器
- delphi - Delphi 10.4.2 Mainform 关闭 QuickReport 预览后消失