Quantmod AddLines () Ошибка: объект не найден - PullRequest
0 голосов
/ 21 января 2019

В последнее время я пытался использовать функцию Quantmod для addLines () вместе с пакетом Shiny для наложения вертикальных линий технического анализа на chartSeries.Однако, когда я определяю глобальные переменные (в этом случае followThroughDays и distributionDays) и использую их в качестве аргументов параметра «v» addLines, появляется следующее сообщение об ошибке:

объект «followThroughDays» не найден

объект 'distributionDays' не найден

 followThroughDays <- 2
 distributionDays <- 3

    output$plot <- 
        renderPlot({
          filtered_data <- window(stock_data, start = graph_start, end = state$progress)
          #flags <- getFollowThroughDaysRowNumber(filtered_data)
            switch(
                input$chartType, 
                "candle_stick" = chartSeries(filtered_data, TA=list(
                  "addLines(v=followThroughDays, on=-1, col='grey')",
                  "addLines(v=distributionDays, on=-1, col='orange')"
                )))})

Что я должен сделать, чтобы аргумент addLines мог обращаться к глобальным переменным для построения линий?Код работает, когда я явно указываю значение (например, 2 или 3), хранящееся в переменных, но будет отображать сообщения об ошибках, когда я использовал переменные в качестве аргументов напрямую.

Воспроизводимая ошибка при загрузке: https://drive.google.com/open?id=1ix81cd9gdJG6nXMM1v1WYwBE2nV0loPy

1 Ответ

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

Вы должны преодолеть эту ошибку, используя paste0 для создания значения аргумента TA.

library("shiny")
library("ggplot2")
library("shinythemes")
library("lubridate")
library("quantmod")
library("data.table")

#source("dtstore.R")

fetchedStockData <- getSymbols("IBM", auto.assign = FALSE)

ui <- 
    fluidPage(
      plotOutput("plot")
        )

followThroughDays <- 300

server <- function(input, output, session) {
  TADays <- 3
  output$plot <- renderPlot({    
    chartSeries(fetchedStockData, theme = chartTheme("white"),
                type = "line", TA = paste0("addLines(v=",followThroughDays,", on=-1, col='orange')"))
  })
}

shinyApp(ui, server)

enter image description here

...