【发布时间】:2019-10-08 07:33:58
【问题描述】:
在 RStudio 中,如果我使用 Ctrl+Enter 逐行运行下面的 Shiny 代码,它可以正常工作。但是,如果我使用“运行应用程序”按钮运行整个代码,则会生成此错误:
ts(x) 中的错误:“ts”对象必须有一个或多个观察结果
我认为这是由于“lambda”参数,但我不明白为什么。任何帮助表示赞赏。
“data.csv”的链接是https://www.dropbox.com/s/p1bhacdg8j1qx42/data.csv?dl=0
======================================
library(shiny)
library(shinydashboard)
library(plotly)
library(forecast)
df <- read.csv("data.csv")
demand <- ts(df$demand, start = c(1995, 1), frequency = 12)
lbd <- BoxCox.lambda(demand, lower=-5, upper=5)
m <- ar(BoxCox(demand,lambda=lbd))
fit_BC <- forecast(m, h=12, lambda=lbd)
ui <- dashboardPage(
dashboardHeader(title = "Plot"),
dashboardSidebar(disable = TRUE),
dashboardBody(fluidRow(column(width = 12, box(plotlyOutput("forecast_plots"),width = NULL))))
)
server <- function(input, output) {
output$forecast_plots <- renderPlotly({
autoplot(fit_BC)
})
}
shinyApp(ui, server)
===================================
【问题讨论】:
-
我不确定您在单击“运行应用程序”按钮时是否“运行了整个代码”。 RStudio 不仅考虑您的 ui() 和 server() 功能吗?尝试使用包含 ui() 上方代码的 global.R 并使用两个文件 ui.R 和 server.R 而不是单个文件。
-
嗨@tic-toc-choc,太好了;你解决了问题!非常感谢。我进一步试验了相同的代码(如你所建议的使用 global.R、ui.R、server.R)并将 3 行块移动到 shinyServer。它产生了一个错误。但是,如果我将“lbd