1

我开始收到一个工作正常但现在不行的数据和代码错误。这项工作是关于降雨数据和需要动物园的hydroTSM 包。当我到达代码中的某个部分时,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

文件链接

代码

## 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)

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

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

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

我也试过并收到:

m <- daily2monthly(x)

UseMethod("time<-") 中的错误:没有适用于 'time<-' 的方法应用于“zoo”类的对象

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

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()

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

4

1 回答 1

0

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

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

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

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

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

在此处输入图像描述

所以,我查阅了R 文档并了解到你可以调用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)

等等...

于 2020-04-29T15:04:53.933 回答