要走一个路要走。它们对于避免重复代码很有用。使您的代码更短,更易于维护。在创建绘图时,您已经使它们起作用了。
func_check_inputs <- function() {
what_races <<- input$race
what_ages <<- c(input$age[1],input$age[2])
if (length(what_races) > 0 & !is.null(what_ages)) {return(TRUE)} else {return(FALSE)}
}
稍后您在函数外部使用what_races
和what_ages
时,我们将使用<<-
运算符将它们设置为全局变量。
这是您完整应用中的功能:
# Load packages ----
library(shiny)
library(ggplot2)
library(dplyr)
library(scales)
library(treemapify)
library(RColorBrewer)
library(forcats)
library(mosaicData)
# Source helpers ----
source("helpers.R")
# Load data ----
data(Marriage,package="mosaicData")
# User interface ----
ui <- fluidPage(
fluidRow(
titlePanel(
h4("Marriage records from the Mobile County,Alabama,probate court.",style='color:black;padding-left: 15px')
)
),br(),fluidRow(
column(2,checkboxGroupInput("race","Races to show",c("White","Black","American Indian","Hispanic")),sliderInput("age","Age Range",min = as.integer(min(Marriage$age)),max = as.integer(max(Marriage$age)),value = c(min,max))
),column(5,plotOutput("tree"),style='height:100px'
),plotOutput("chart"),style='height:100px'
)
)
)
server <- function(input,output) {
#Function to check if inputs are valid
func_check_inputs <- function() {
#Make what_races and what_ages global variables
what_races <<- input$race
what_ages <<- c(input$age[1],input$age[2])
if (length(what_races) > 0 & !is.null(what_ages)) {return(TRUE)} else {return(FALSE)}
}
output$tree <- renderPlot({
if (func_check_inputs() == TRUE) {plot_tree(what_races,what_ages)}
})
output$chart <- renderPlot({
if (func_check_inputs() == TRUE) {plot_tree(what_races,what_ages)}
})
}
# Run the app
shinyApp(ui,server)
本文链接:https://www.f2er.com/2440771.html