Неподдерживаемый тип индекса: NULL -> график в блестящем - PullRequest
0 голосов
/ 25 января 2019

Я получаю ошибку с индексом построения графика, используя график в сочетании с реактивными значениями в блестящем. Боковая панель загружается без проблем, но есть проблема с отображением диаграммы, которую я не могу определить. Любая помощь в решении проблемы индекса будет высоко ценится. Спасибо!

library(shiny)
library(plotly)

data(economics, package = "ggplot2")


nms <- names(economics) 

ui <- fluidPage(

  headerPanel("TEST"),
  sidebarPanel(
    selectInput('x', 'X', choices = nms, selected = nms[[1]]),
    selectInput('y', 'Y', choices = nms, selected = nms[[2]]),
    sliderInput('plotHeight', 'Height of plot (in pixels)', 
                min = 100, max = 2000, value = 1000)
  ),
  mainPanel(
    plotlyOutput('trendPlot', height = "900px")
  )
)

server <- function(input, output) {

  #add reactive data information. Dataset = built in diamonds data
  dataset  <- reactive({economics[, c(input$xcol, input$ycol)]
  })

  output$trendPlot <- renderPlotly({

    # build graph with ggplot syntax
    p <- ggplot(dataset(), aes_string(x = input$x, y = input$y)) + 
      geom_line()


    ggplotly(p) %>% 
      layout(height = input$plotHeight, autosize=TRUE)

  })

}

shinyApp(ui, server)

Предупреждение: ошибка в: неподдерживаемый тип индекса: NULL

1 Ответ

0 голосов
/ 25 января 2019

Вы по ошибке использовали xcol и ycol, но не знаете почему. Без этих имен код работает нормально.

library(shiny)
library(plotly)
library(tidyverse)

data(economics, package = "ggplot2")


nms <- names(economics) 

ui <- fluidPage(

  headerPanel("TEST"),
  sidebarPanel(
    selectInput('x', 'X', choices = nms, selected = nms[[1]]),
    selectInput('y', 'Y', choices = nms, selected = nms[[2]]),
    sliderInput('plotHeight', 'Height of plot (in pixels)', 
                min = 100, max = 2000, value = 1000)
  ),
  mainPanel(
    plotlyOutput('trendPlot', height = "900px")
  )
)

server <- function(input, output) {

  #add reactive data information. Dataset = built in diamonds data
  dataset  <- reactive({
    economics[, c(input$x, input$y)]

  })

  output$trendPlot <- renderPlotly({


    # build graph with ggplot syntax
    p <- ggplot(dataset(), aes_string(input$x, input$y)) + 
      geom_line()


    ggplotly(p, height = input$plotHeight)

  })

}

shinyApp(ui, server)
...