如何解决R:如何不过滤Shinydashboard
这是一个非常简单的闪亮仪表板:
# Load libraries
library(shiny)
library(shinydashboard)
library(tidyverse)
data <- data.frame(sex = sample(c("Male","Female"),size=100,replace=TRUE),smoker = sample(c("yes","no"),replace=TRUE))
## UI ##
ui <- dashboardPage(
dashboardHeader(
title = "My Dashboard"
),dashboardSidebar(
sidebarMenu(
)
),dashboardBody(
box(
title="Barplot",status='primary',solidHeader = T,plotOutput("myBarplot")
),box(
title="Filter",status='warning',selectInput("findSex","Choose sex:",c("All","Male","Female"))
)
)
)
## Server ##
server <- function(input,output){
set.seed(122)
filtered_df <- reactive({
data <- data %>% filter(sex == input$findSex)
data})
output$myBarplot <- renderPlot({
filtered_df() %>% ggplot(aes(x = smoker)) + geom_bar() + ylab("Prozente")
})
}
shinyApp(ui,server)
信息中心显示吸烟者/不吸烟者的数量,您可以按性别进行过滤。它的实现如下:
data <- data %>% filter(sex == input$findSex)
现在我有两个问题:
- 默认情况下如何显示所有病例(男性和女性)?
- 选择男性或女性后,如何再次显示所有病例? (R中是否有类似
filter(sex == '*')
的东西?使用selectInput()
时是否可以区分标签和值?(例如,在HTML中,您可以拥有<select><option value='1'>Male</option> <option value='2'>Female</option></select>
)
解决方法
您可以在'All'
中转换c('Male','Female')
并使用%in%
:
filtered_df <- reactive({
if (input$findSex == "All") {
sexSelect <- c('Male','Female')
}
else {
sexSelect <- input$findSex
}
data %>% filter(sex %in% sexSelect)
})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。