#r #shiny
#r #блестящий
Вопрос:
Я пытаюсь создать панель мониторинга, где для каждого вида, выбранного с помощью кнопки radiobutton, мы можем видеть их гистограмму для длины чашелистика и длины лепестка. На панели инструментов появляется ошибка: «объект типа ‘closure’ не поддается подстановке».
Когда я убираю часть reactive(), в которой я определил df1, и помещаю этот блок df1 в функцию renderplot без reactive(), мое приложение работает нормально. Есть идеи, почему? Моя цель — не определять df1 или данные каждый раз, когда я добавляю новый график на свою панель мониторинга.
## app.R ##
library(shiny)
library(dplyr)
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(title = "Iris Data Visualization"),
## Sidebar content
dashboardSidebar(
sliderInput(inputId = "bins",
label = "Number of bins:",
min = 1,
max = 50,
value = 10),
radioButtons("speci", "Species:",
c("Setosa" = "Seto",
"Versicolor" = "Ver",
"Virginica" = "Vir"
))
),
dashboardBody(
fluidRow(
box(plotOutput(outputId = "distPlot1",height = 250)),
box(plotOutput(outputId = "distPlot2",height = 250))
)
)
)
server <- function(input, output) {
df1<-reactive({
data('iris')%>%filter(Species==switch(input$speci,
"Seto" ="setosa",
"Ver"= "versicolor",
"Vir"="virginica","setosa"))
}
)
output$distPlot1 <- renderPlot({
y<-df1$Sepal.Length
bins <- seq(min(y), max(y), length.out = input$bins 1)
hist(y, breaks = bins, col = "#75AADB", border = "white",
xlab = "Sepal Length",
main = "Histogram of Sepal Length",probability = TRUE)
lines(density(y), col="red", lwd=2)
lines(density(y, adjust=2), lty="dotted", col="darkgreen", lwd=2)
})
output$distPlot2 <- renderPlot({
y<-df1$Petal.Length
bins <- seq(min(y), max(y), length.out = input$bins 1)
hist(y, breaks = bins, col = "#75AADB", border = "white",
xlab = "Petal Length",
main = "Histogram of Petal Length",probability = TRUE)
lines(density(y), col="red", lwd=2)
lines(density(y, adjust=2), lty="dotted", col="darkgreen", lwd=2)
})
}
shinyApp(ui = ui, server = server)```
Комментарии:
1. если df1 является реактивным, его необходимо использовать со скобками :
y<-df1()$Sepal.Length
2. Это работает! Большое вам спасибо @HubertL . Действительно ценю это!