Получение ошибки: объект типа ‘closure’ не поддается замене на блестящей панели инструментов

#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 . Действительно ценю это!