【问题标题】:Unable to remove warnings and messages for some library in R无法删除 R 中某些库的警告和消息
【发布时间】:2017-07-18 23:25:22
【问题描述】:

我无法理解这些消息来自哪个库:

Warning messages:
1: In if (!(tclass %in% c("yearmon", "yearqtr"))) lubridate::tz(ret) <- tzone :
  the condition has length > 1 and only the first element will be used
2: In if (!(tclass %in% c("yearmon", "yearqtr"))) lubridate::tz(ret) <- tzone :
  the condition has length > 1 and only the first element will be used

我已经使用以下方法抑制了代码中使用的所有库的警告和消息:

suppressWarnings(suppressMessages(library(methods)))
suppressWarnings(suppressMessages(library(jsonlite)))
suppressWarnings(suppressMessages(library(tseries)))
suppressWarnings(suppressMessages(library(forecast)))
suppressWarnings(suppressMessages(library(sweep)))      # Broom tidiers for forecast pkg
suppressWarnings(suppressMessages(library(timekit)))    # Working with time series in R
suppressWarnings(suppressMessages(library(tidyquant)))  # Get's data from FRED, loads tidyverse behind the scenes
suppressWarnings(suppressMessages(library(data.table)))
suppressWarnings(suppressMessages(library(stringr)))
suppressWarnings(suppressMessages(library(httr)))

我尝试过抑制 lubridate 和 zoo。还是没有变化。

请建议我应该怎么做才能抑制上述消息。

数据框是这样的:

1499889600, 18.71832

1499893200, 19.02870

1499896800, 18.91708

1499900400, 18.80855

1499904000, 19.04631

1499907600, 18.89747

1499911200, 18.69003

1499914800, 18.98538

1499918400, 18.87732

1499922000, 18.69314

1499925600, 18.99397

1499929200, 18.77869

1499932800, 18.68454

1499936400, 18.98039

1499940000, 18.88998

1499943600, 18.71440

1499947200, 18.98789

1499950800, 18.86854

1499954400, 18.69711

1499958000, 18.91687

1499961600, 18.89083

1499965200, 18.82566

1499968800, 19.00667

1499972400, 18.87633

1499976000, 18.72960

1499979600, 19.04492

1499983200, 18.91356

1499986800, 18.83017

1499990400, 19.02865

1499994000, 18.88282

1499997600, 18.70087

1500001200, 19.06607

1500004800, 18.80885

1500008400, 18.61242

1500012000, 18.94070

1500015600, 18.82240

1500019200, 18.68274

1500022800, 18.97367

1500026400, 18.79754

1500030000, 18.72475

1500033600, 18.94517

1500037200, 18.93362

1500040800, 18.69782

1500044400, 19.02091

1500048000, 18.83109

1500051600, 18.74415

1500055200, 18.89581

1500058800, 18.90286

代码:

# Use as_datetime to convert from numeric time stamps to date-times

    dataframe <- dataframe %>%
        mutate(timestamp = as_datetime(timestamp))

# Setup your ts object

    ts_frequency <- 24
    start <- 1
    tk_ts_dataframe <- tk_ts(dataframe, start = start, freq = ts_frequency, silent = TRUE)

    # Arima model
    fit <- auto.arima(tk_ts_dataframe, trace = TRUE, stepwise = FALSE) 

    # Forecast
    forecast_duration <- 10
    fc <- forecast(fit, h = forecast_duration)

    # Perform sweep
    final <- sw_sweep(fc, timekit_idx = TRUE)
    final

【问题讨论】:

  • 您需要修复代码问题,而不是抑制警告。

标签: r suppress


【解决方案1】:

它似乎不是来自任何包,而是你的 if 语句条件的逻辑。 R 试图告诉您 tclass 不是您可能怀疑或未怀疑的原子值,而是值的列表/向量。因此,它不会查看此向量/列表中的所有值以放入 if 条件,而是仅考虑此向量/列表的第一个元素。

解决方案:确保 tclass 是一个原子值以消除警告,如果你知道它是一个向量并且你不介意它是否使用第一个值,那么你很好。

加上要摆脱警告消息一起使用options(warn=-1)

【讨论】:

  • 你能知道这是从哪里来的吗?我没有在我的代码中使用过这种 if?
  • 首先向我解释一下 tclass 到底应该是什么?
  • 我认为 tclass 是时间序列。现在基本上我将 ARIMA 应用于时间序列数据。最初,我有一个数据框,其纪元时间为 row.names 和一列中的值。我将此数据帧转换为: tk_ts(ts_df , start = 1, freq = ts_frequency, silent = TRUE) 可以应用 arima 的时间序列对象。
  • 好吧,我明白你在做什么,但是把你初始化 tclass 的代码发给我,这样我们就可以尝试解决这个问题并删除警告。
  • 你仍然没有告诉我 tclass 来自哪里。我需要知道这一点,因为 tclass 是您 if 语句中的主要问题。你的 if 语句中没有提到你的数据框,所以我不需要知道
猜你喜欢
  • 2010-12-31
  • 2018-01-06
  • 2022-08-20
  • 2021-01-16
  • 2011-08-08
  • 2014-04-19
  • 1970-01-01
  • 1970-01-01
  • 2012-02-09
相关资源
最近更新 更多