Я новичок в создании приложений R Shiny. До сих пор я делаю часть своего приложения, в которой я пытаюсь генерировать различные графики в зависимости от того, какая переменная выбрана для анализа. Я буду использовать встроенный набор данных iris
в качестве примера.
library(shiny)
library(tidyverse)
ui <- fluidPage(
titlePanel("Title"),
sidebarLayout(
sidebarPanel("Create plots of mean variables by species. ",
varSelectInput("vars", h5("Choose a variable to display."),
data = iris,
selected = "Sepal.Length"),
sliderInput("toprange", h5("Display Number of Species"),
min = 1, max = 3, value = 3)),
#in my actual dataset there are more than 30 different levels.
mainPanel(plotOutput("bars"))
)
)
server <- function(input, output) {
output$bars <- renderPlot({
species_plot(input$vars, input$toprange)
})
}
shinyApp(ui = ui, server = server)
Вот функция, используемая для создания графиков:
species_plot <- function(variable, min) {
iris %>%
group_by(Species) %>%
filter(Species != "") %>%
summarize(avg = mean({{variable}})) %>%
top_n(avg, min) %>%
ggplot(aes(x = reorder(Species, avg), y = avg)) +
geom_col() +
labs(x = "Species", y = paste("Mean", toString(sym(variable)))) +
ggtitle(paste("Mean", toString(sym(variable)), "by Species")) +
coord_flip()
}
Когда я запускаю приложение, все на боковой панели показывает, но на главной панели появляется сообщение об ошибке «отсутствует значение, где требуется ИСТИНА / ЛОЖЬ», и я не уверен, откуда это вытекает. Например, я не вижу условного выражения, которое бы вывело эту ошибку.