Блестящее приложение: не может построить график акций на основе пользовательского ввода - PullRequest
0 голосов
/ 04 сентября 2018

Я пытаюсь построить биржевую диаграмму с помощью QuantMod в блестящем приложении, но получаю следующую ошибку: загрузка $ stockInput не удалась после двух попыток. Сообщение об ошибке: ошибка HTTP 404. Любая помощь приветствуется.

Сервер:

library(quantmod)

shinyServer(function(input, output) {

  output$distPlot <- renderPlot({

    price <- getSymbols('input$stockInput',from='2017-01-01')
    plot(price)

})})

UI:

library(shiny)

shinyUI(fluidPage(


  titlePanel("Stock Chart"),


  sidebarLayout(
    sidebarPanel(

       #This is a dropdown to select the stock
       selectInput("stockInput", 
                   "Pick your stock:", 
                   c("AMZN","FB","GOOG","NVDA","AAPL"),
                   "AMZN"),selected = "GOOG"),

    # Show a plot of the generated distribution
    mainPanel(
       plotOutput("distPlot")
))))

Спасибо.

1 Ответ

0 голосов
/ 04 сентября 2018

Ваш код требует нескольких изменений. Во-первых, когда вы получаете доступ к блестящему объекту пользовательского интерфейса в server.R, вы должны использовать его как объект, а не как символ в кавычках

price <- getSymbols(input$stockInput,from='2017-01-01')

И функция getSymbols без значения, установленного в качестве аргумента (auto.assign = F), создает новый объект xts в названии запаса, данные которого запрашиваются, и поэтому в приведенном ниже коде я использовал его с настройкой auto.assign = F так становится проще получить доступ к объекту price для построения. В противном случае вам, возможно, придется получить значение внутри price, используя get(), а затем вывести его на график, как я прокомментировал.

server.R

library(quantmod)

shinyServer(function(input, output) {

  output$distPlot <- renderPlot({

    price <- getSymbols(input$stockInput,from='2017-01-01', auto.assign = F)
    #plot(get(price), main = price) #this is used when auto.assign is not set by default which is TRUE
    plot(price, main = input$stockInput) # this is when the xts object is stored in the name price itself

  })})

ui.R

library(shiny)

shinyUI(fluidPage(


  titlePanel("Stock Chart"),


  sidebarLayout(
    sidebarPanel(

      #This is a dropdown to select the stock
      selectInput("stockInput", 
                  "Pick your stock:", 
                  c("AMZN","FB","GOOG","NVDA","AAPL"),
                  "AMZN"),selected = "GOOG"),

    # Show a plot of the generated distribution
    mainPanel(
      plotOutput("distPlot")
    ))))

Надеюсь, это прояснит!

...