关于此错误的问题:“ $。shinyoutput中的错误:不允许从Shinyoutput对象读取。”

时间:2019-10-21 03:22:52

标签: r shiny

我正在尝试使用预加载的数据准备Shinyapp。除了其他问题(我现在是nooby)外,我想问为什么这个错误不断发生。这是我的代码,我不知道该说些什么,但是我真的希望您的专业知识能够解决这个问题。这是我的脚本:

UI。

min<-min(reportesFGE2$Fecha_Registro)
max<-max(reportesFGE2$Fecha_Registro)


ui <- fluidPage(
titlePanel("Delitos"),
sidebarPanel(

dateRangeInput(inputId = "fecha_r",
               label= "Fecha de registro",
               min = Sys.Date() - 5, max = Sys.Date() + 5),

selectInput(inputId = "nivel",
            label= "Nivel", 
            multiple = F,
            choices = c("Nacional"=1, "Provincial"=2)),

selectizeInput(inputId = "provincia",
               label= "provincia", 
               multiple = T,
               choices = as.character(unique(reportesFGE2$pro_descripcion))),

selectInput(inputId = "tipo_delito1",
            label= "Presunto delito", 
            multiple = T,
            choices = as.character(unique(reportesFGE2$Presunto_Delito)))),
mainPanel( plotOutput("plot1"))
)

这是SERVER。

server <- function(input, output) {


output$plot1 <- renderPlot({

if (req(output$nivel)==1) {

  reportesFGE2$anio<-substring(reportesFGE2$Fecha_Registro,1,4)
  x<- subset(reportesFGE2,Presunto_Delito==input$tipo_delito
             &Fecha_Registro>=input$fecha_r[1]&Fecha_Registro<=input$fecha_r[2])
  y <- x %>% count(x$Presunto_Delito, x$anio)


  p1<-plot(y$n~y$`x$anio`,
           type="o",
           main="Número de delitos por año\n(hasta septiembre de 2019)",
           xlab=input$tipo_delito,
           ylab="Número de delitos")


} else  if (req(output$nivel)==2) {

  selectedData <- reactive({
    req(input$fecha_r[1])
    req(input$fecha_r[2])
    req(input$tipo_delito)
    req(input$provincia)
    reportesFGE2 %>%
      dplyr::filter( Fecha_Registro >= input$fecha_R[1]
                     & Fecha_Registro <= input$fecha_R[2]
                     &pro_descripcion %in% input$provincia
                    & Presunto_Delito %in% input$tipo_delito)
  })


  output$plot1 <-renderPlot({
    x==selectedData()
    x$anio<-substring(x$Fecha_Registro,1,4)
    y <- x %>% count(x$Presunto_Delito, x$anio)


    p1<-plot(y$n~y$`x$anio`,
             type="o",
             main="Número de delitos por año\n(hasta septiembre de 2019)",
             xlab=input$tipo_delito,
             ylab="Número de delitos")
  })      
}
 })
 }
shinyApp(ui = ui, server = server)

1 个答案:

答案 0 :(得分:0)

我无法测试它,因为您的代码示例不可复制。但是错误状态是您正在尝试直接在服务器中访问UI输出变量。当然,您可以在服务器中访问生成的output,但是它将变成input,对吧?

在检查output$nivel是1还是2时会发生这种情况。您应该在服务器中使用nivel访问input$nivel变量。