r - Shiny App 过滤一次 df 用于多个绘图
问题描述
我有一个闪亮的应用程序,它根据选定的过滤器生成多个图,对于服务器部分中的每个图,我根据选定的输入过滤器过滤数据:
output$plot_1 <- renderPlot({
df <- df %>% filter(df$filter == input$age)
#plot code here
})
output$plot_2 <- renderPlot({
df <- df %>% filter(df$filter == input$age)
#plot code here
})
我必须为所有图执行此操作(在 renderPLot 函数中过滤 df)。是否可以在 renderPlot 之外进行,以便过滤后的 df 可用于所有绘图?
解决方案
当然,我们可以将过滤后的数据存储在响应式中,因此我们可以在多个地方使用它。使用反应式时请注意双括号,即df_filtered()
这是一个最小的工作示例,显示数据存储在反应式中并在两个图中使用。
library(shiny)
library(dplyr)
ui <- fluidPage(
selectInput("mydropdown", "Select Species", choices = unique(iris$Species)),
plotOutput("plot_1"),
plotOutput("plot_2")
)
server <- function(input, output, session) {
#Reactive
df_filtered <- reactive({
df <- filter(iris, Species == input$mydropdown)
return(df)
})
#Plot 1
output$plot_1 <- renderPlot({
plot(df_filtered()$Petal.Length)
})
#Plot 2
output$plot_2 <- renderPlot({
plot(df_filtered()$Petal.Width)
})
}
shinyApp(ui, server)
推荐阅读
- python - 返回列表中引用索引的元素
- angular - Angular 9 *ngFor 循环跳过数组中的一些对象
- python - 需要帮助使用 pygame 实现合并排序的可视化工具
- r - 以万无一失的方式覆盖离散的 x 轴标签,以避免标签和数据不匹配
- azure - BlobTrigger 在部署时会导致 Azure Functions 应用崩溃
- ios - 如何导出具有透明背景(Alpha 通道)的视频
- javascript - 反应栏插件
- django - Django 3.0:django-notifications 给出错误:“Notification.recipient”必须是“User”实例
- flutter - 这个飞镖功能有什么问题
- r - Rstudio 分别计算模式中的值