【问题标题】:Errors related to zoo package and dates与 zoo 包和日期相关的错误
【发布时间】:2020-04-29 13:42:28
【问题描述】:

我的数据和代码开始出现错误,而这些数据和代码运行良好,而现在却无法正常运行。这项工作是关于降雨数据和需要动物园的hydroTSM package。当我到达代码中的某个部分时,hydroTSM 包中包含的一个简单函数将无法运行。故障排除后,我认为它与 zoo 包有关,但不是 100% 确定。

我尝试使用 trimws() 清理我的数据并使用多种方法将我的 df 转换为动物园,但没有。我已经开始了一个新的 R 会话并重新启动了我的机器。我还重新安装了 HydroTSM。知道它是什么吗?

数据

示例

Date, Rainfall
2001-01-01  0.00
2001-01-02  0.00
2001-01-03  0.00
2001-01-04  0.00
2001-01-05  0.00
2001-01-06  0.00
2001-01-07  0.00

LINK TO FILE

代码

## Library Packages
library(hydroTSM)
library(devtools)

## Read in the data and format for zoo
df <- read.table("Rainfall2" , header = TRUE, sep="\t")
df$Date <- as.Date(df$Date , format = "%m/%d/%y")
x <- zoo(df[, -1], df[, 1])
dates <- time(x)

## Run the daily2monthly function in HydroTSM
m <- daily2monthly(x, FUN=sum, na.rm=TRUE)

daily2monthly 中的错误(x,FUN = sum,na.rm = TRUE):未使用的参数(FUN = sum,na.rm = TRUE)

如果您查看包的链接,我几乎完全按照说明进行操作,除了我自己提出的格式化数据的方式。所以我也尝试了以下代码转换为zoo并得到了这个错误。

x <- read.zoo(df, format = "%d/%m/%Y")

read.zoo(df, format = "%d/%m/%Y") 中的错误:索引有 6935 错误 数据行的条目:

我也试过并收到了:

m <- daily2monthly(x)

UseMethod("time

所有其他功能都在包中工作,包括:

nyears <- yip(from=start(x), to=end(x), out.type="nmbr" ) )

smry(x)

hydroplot(x, var.type="Precipitation", main="at Lake Caroline",
          pfreq = "dm", from="2001-01-01")

所以,我真的不明白为什么我在这里用daily2monthy()撞墙

我真的可以使用你的帮助!非常感谢!

【问题讨论】:

  • 如果你只运行m &lt;- daily2monthly(x)会发生什么
  • UseMethod("time
  • 它正在为我运行。它也需要 xts 包。您在加载这些包时收到任何警告吗?
  • 我确实也调用过它,它也应该加载hydroTSM。这与我的本地安装有关 - 请参阅下面的答案。任何的想法?感谢您对此进行调查。
  • 包名区分大小写,名称是hydroTSM,而不是HydroTSM。 (2) 它还加载了 zoo,因此您不需要额外的库语句和 (3) read.zoo 可以直接读取文件并同时转换 Date 列:library(hydroTSM); x &lt;- read.zoo("Rainfall2", format = "%m/%d/%y", header = TRUE)

标签: r zoo hydrotsm


【解决方案1】:

好吧,我找到了解决方法。这里有几个问题。一个与我在动物园中格式化日期有关,另一个与 daily2monthly() 所在的库有关。

我做的第一件事是修复动物园格式问题。

发件人: x &lt;- read.zoo(df, format = "%Y-%m-%d")

收件人: x &lt;- read.zoo(df, format = "%d/%m/%Y")

这解决了动物园的错误。然后我在控制台调用函数时注意到了库问题:

所以,我查了R documentation,得知您可以拨打subdaily2monthly(),我试过了,它奏效了。仍然不完全确定原因,但我认为这与库的冲突有关,假设daily2monthly() 在从控制台调用函数时应该是hydroTSM 组的一部分。

新代码:

df <- read.table("Rainfall2" , header = TRUE, sep="\t")
df$Date <- as.Date(df$Date , format = "%m/%d/%y")
x <- zoo(df[, -1], df[, 1])
x <- read.zoo(df, format = "%Y-%m-%d")
m <- subdaily2monthly(x, FUN=sum, na.rm=TRUE)

等等……

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    • 1970-01-01
    • 2017-01-02
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    相关资源
    最近更新 更多