заговоры с блестящими - PullRequest
0 голосов
/ 22 марта 2020

Здравствуйте, я новичок в r блестящий. Я пытаюсь создать приложение, которое отображает акции из QuantMod в r, как это enter image description here

это код, который у меня есть

library(shiny)

server = function(input, output, session) {
  output$plot <- renderPlot({
    data <- getSymbols(input$stock, 
                       from = input$date[1],
                       to = input$date[2]
                      )

    chartSeries(data, theme = chartTheme("white"),
                type = "line", log.scale = input$log, TA = NULL)
  })
} # the server

ui = basicPage(
  h1("stock app"),
  textInput("stocks", "pick stock"),
  dateRangeInput("date", "date range ", start = "2013-01-01", end = "2020-03-15",min = "2007-01-01", max = "2020-03-15",format = "yyyy-mm-dd" ),
  plotOutput("plot")
) # the user interface

shinyApp(ui = ui, server = server) # perform app launch

однако вместо отображения серии акций мое приложение возвращает ошибку, подобную этой

Ошибка: для chartSeries требуется объект xtsible.

Я хотел бы чтобы знать, почему мое приложение не отображает акции на моем входе

1 Ответ

1 голос
/ 23 марта 2020

Вот рабочая версия, требуются некоторые незначительные изменения (см. Комментарии ниже).

Ваш input$stocks должен соответствовать inputId в ui. В server.

не было 's'. Вам нужно auto.assign = FALSE в getSymbols, так как по умолчанию данные отправляются в parent.frame.

Я добавил акцию по умолчанию в textInput, поэтому вы не получите сообщение об ошибке при запуске.

chartSeries ссылается на input$log, но в пользовательском интерфейсе нет соответствующего ввода. Для этого добавлен флажок.

library(shiny)
library(quantmod)

server = function(input, output, session) {
  output$plot <- renderPlot({
    data <- getSymbols(input$stocks,  # needs to match textInput, missing s
                       from = input$date[1],
                       to = input$date[2],
                       auto.assign = FALSE   # getSymbols returns data to parent.frame by default
    )
    chartSeries(data, theme = chartTheme("white"),
                type = "line", log.scale = input$log, TA = NULL) # no input for "log", needs to be added to ui
  })
} # the server

ui = basicPage(
  h1("stock app"),
  textInput("stocks", "pick stock", "AAPL"),   # added default stock
  dateRangeInput("date", "date range ", start = "2013-01-01", end = "2020-03-15",min = "2007-01-01", max = "2020-03-15",format = "yyyy-mm-dd" ),
  checkboxInput(inputId = "log", label = "log y axis", value = FALSE),  # added "log" input
  plotOutput("plot")
) # the user interface

shinyApp(ui = ui, server = server) # perform app launch
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...