Вот рабочая версия, требуются некоторые незначительные изменения (см. Комментарии ниже).
Ваш 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