【发布时间】:2022-01-13 16:07:16
【问题描述】:
希望您能帮助我在 R 中使用 Shiny 应用程序。我是 Shiny 的新手,需要一些帮助来简化我的后端部分。
我正在尝试基于两个输入呈现表格,一个是医院输入,第二个输入是请求的表格类型。为了得到我想要的表,我做了几个 if 语句,但代码似乎很复杂,可以简化。
基本上,我需要根据医院和表格类型为 Shiny 应用程序显示表格,而不需要太长的 if 语句。
有没有人可以帮助我编写下面的代码以使其更简单。
library(shiny)
library(tidyverse)
UCSF <- list( ndc_ucsf_v2, brand_n_v2, ndc_tier2_ucsf_v2, ndc_tier5_ucsf_v2, ucsf_ldd_list_v2,
brand_n_class_ucsf_v2, ndc_rest_of_tiers_ucsf_v2)
hospital_list <- c("UCSF", "VIDANTHEALTH", "CONH", "ERLR", "OSURX", "SUTTHEALTH",
"UHC", "WHT")
table_list <- c("By NDC", "By brand name", "By GPI class", "By tier 2", "By tier 5", "Other tiers",
"LDD", "By hierarchy")
ui <- fluidPage(
titlePanel("Hospital rebate claims"),
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
selectInput(inputId = "hospital",
label = "Hostpital/clinic",
choices = c("Choose hospital", hospital_list),
multiple = FALSE),
selectInput(inputId = "table_type",
label = "Type of analysis",
multiple = FALSE, choices = table_list)),
mainPanel(
tableOutput(outputId = "claimtable"),
plotOutput(outputId = "hist")
)))
server <- function(input, output) {
output$claimtable <- renderTable({
if(input$hospital == "UCSF" & input$table_type == "By NDC"){
output$claimtable <- return(UCSF[[1]])
}
if(input$hospital == "UCSF" & input$table_type == "By brand name") {
output$claimtable <- return(UCSF[[2]])
}
if(input$hospital == "UCSF" & input$table_type == "By tier 2") {
output$claimtable <- return(UCSF[[3]])
}
if(input$hospital == "UCSF" & input$table_type == "By tier 5") {
output$claimtable <- return(UCSF[[4]])
}
if(input$hospital == "UCSF" & input$table_type == "LDD") {
output$claimtable <- return(UCSF[[5]])
}
if(input$hospital == "UCSF" & input$table_type == "By GPI class") {
output$claimtable <- return(UCSF[[6]])
}
if(input$hospital == "UCSF" & input$table_type == "Other tiers") {
output$claimtable <- return(UCSF[[7]])
}})
}
shinyApp(ui = ui, server = server)
【问题讨论】: