小编faa*_*yan的帖子

避免 R 中 for 循环中的“优化失败”

我正在尝试使用 R 中的 HoltWinters 函数进行大量时间序列预测。为此,我使用 for 循环并在内部调用该函数,并将预测保存在 data.frame 中。

问题是 HoltWinters 函数的一些结果给出了错误,特别是优化错误:

Error en HoltWinters(TS[[i]]) : optimization failure
Run Code Online (Sandbox Code Playgroud)

这个错误打破了循环。

所以我需要的是“尝试”之类的东西:如果它可以使 HoltWinters 函数,则保存预测,否则保存错误。

下面的代码复制了这个问题:

data <- list()
data[[1]] <- rnorm(36)
data[[2]] <-
  c(
    24,24,28,24,28,22,18,20,19,22,28,28,28,26,24,
    20,24,20,18,17,21,21,21,28,26,32,26,22,20,20,
    20,22,24,24,20,26
  )
data[[3]] <- rnorm(36)

TS <- list()
Outputs <- list()

for (i in 1:3) {
  TS[[i]] <- ts(data[[i]], start = 1, frequency = 12)
  Function <- HoltWinters(TS[[i]])
  TSpredict <- predict(Function, n.ahead = 1)[1]
  Outputs[[i]] <-
    data.frame(LastReal = TS[[i]][length(TS[[i]])], Forecast = TSpredict)
}
Run Code Online (Sandbox Code Playgroud)

其中 i <- …

optimization for-loop r forecasting holtwinters

5
推荐指数
1
解决办法
2772
查看次数

R 格式表上的相等列宽

我正在使用 formattable 包直接从 R 制作一些报告,我需要使用 normalize_bar“样式”的列具有相同的宽度,以便可以比较列之间的值。

以下示例显示了具有非常相似的值(最小值和最大值相等)但宽度不同的两列,丢失了条形图的图形细节(“Test.number.1.score”和“test2_score”)。

library(formattable)

df <- data.frame(
  id = 1:10,
  name = c("Bob", "Ashley", "James", "David", "Jenny", 
           "Hans", "Leo", "John", "Emily", "Lee"), 
  age = c(28, 27, 30, 28, 29, 29, 27, 27, 31, 30),
  grade = c("C", "A", "A", "C", "B", "B", "B", "A", "C", "C"),
  Test.number.1.score = c(8.9, 9.5, 9.6, 8.9, 9.1, 9.3, 9.3, 9.9, 8.5, 8.6),
  test2_score = c(9.1, 9.1, 9.2, 9.1, 8.9, 8.5, 9.9, 9.3, 9.1, 8.6),
  final_score = c(9, 9.3, 9.4, 9, …
Run Code Online (Sandbox Code Playgroud)

r report formattable htmlwidgets

1
推荐指数
1
解决办法
4937
查看次数