Исправление ошибки «Нет обработчика зарегистрировано» для R SHINY - PullRequest
0 голосов
/ 08 октября 2019

Я создаю приложение SHINY, которое использует значения коэффициента для подмножества кадра данных и рисования гистограммы.

Обратите внимание, что кадр данных был расплавлен в предыдущем наборе команд, что позволило отобразить несколько переменных на оси x. Похоже, что это также мешает R прочитать имена столбцов в temp.

. После запуска приложения SHINY открывает страницу, но оно быстро закрывается и выдает следующую ошибку:

Предупреждение: ошибка в: не зарегистрирован обработчик для типа .clientdata_output__width [нет трассировки стека] Ошибка в (функция (имя, значение, блестящая сессия): обработчик не зарегистрирован для типа .clientdata_out ...

Я не могу понять, что не так с моим кодом. Кто-нибудь может помочь?

# create data
temp<-structure(list(id = c("1", "2", "3", "4", "5", "6", "7"), Workshop = c("Peer Jury Workshop", "Peer Jury Workshop", "School-Based Courts", "School-Based Courts", "School-Based Courts", "School Safety in the 21st Century", "School Safety in the 21st Century"), variable = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("Engagement", "EncouragedLrg", "Knowledgeable", "LearnNew", "PresenterAgain", "TopicAgain", "Organized", "HandoutsUseful"), class = "factor"),     value = c(1, 1, 5, 3, 5, 4, 5)), row.names = c(NA, 7L), class = "data.frame")


library(shiny);library(plotly);library(tidyverse)
w<-names(temp[ ,c(5)])  # this does not work, why?

  ui <- fluidPage(
      headerPanel("Session Reviewer"),
      sidebarPanel(
          selectInput('Workshop', 'Which workshop?', 
                c("All",unique(as.character(temp$Workshop))))),
      plotOutput(  plotlyOutput('trendPlot', height = "100%")    )  
      )

  server<-function(input,output){
    dataset<-reactive({
      temp
        if(input$Workshop!="All") {dataset<-dataset[dataset$Workshop==input$Workshop,] }  
              })
    output$trendPlot <- renderPlotly({

        p<-ggplot(dataset(),aes_string(x=variable,y=value))+geom_bar(stat='summary',fill='cadetblue3')  
        ggplotly(p)
            })  
            }


shinyApp(ui, server)

1 Ответ

0 голосов
/ 08 октября 2019

Здесь есть несколько проблем с w<-names(temp[ ,c(5)])

Сначала вы пытаетесь выбрать имя 5-го столбца кадра данных, который имеет только 4 столбца.

Второй, names(temp) выводит список (т.е. без столбцов), поэтому подстановка по столбцу не будет работать вообще.

Что-то вроде names(temp)[4] даст вам четвертое имя в вашем фрейме данных temp,в этом случае "values". Это то, что вы пытаетесь сделать?

Кроме того, ошибка вашего обработчика вызвана переносом plotlyOutput в plotOutput. Просто используйте plotlyOutput('trendPlot', height = "100%"), и ваше приложение по крайней мере загрузится. В вызове ggplot по-прежнему существует проблема с x=variable, поскольку variable не определено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...