Zoo error: length(time(x)) == length(by[[1]]) is not TRUE
Zoo error: length(time(x)) == length(by[[1]]) is not TRUE
我正在尝试根据 Hargreaves Samani 方法使用 this package
从气候数据中计算蒸散量
我正在处理的 csv 格式数据可用 here,我正在使用的代码(带注释)在
下方
## Using Evapotranspiration package to get DAILY PE ###
require(Evapotranspiration)
require(zoo)
#load the constants required from the Evapotranspiration package
data("constants")
#converting the CSV to a zoo object
OakPark<- read.csv("OakParkR.csv", header=TRUE)
#Fill the blanks in the csv with NAs
na.fill(OakPark,NA)
#convert to a zoo
OakPark <- as.zoo(OakPark)
#create a zoo series with the required variables
PE.data <- OakPark[ ,c(3,5)]
#converting to a list as ET function works on a list
PE.data <- as.list(PE.data)
#change constants to the local values
constants$Elev = 62
constants$lat_rad = 0.9226
#defining the function
funname <- "HargreavesSamani"
class(PE.data) <- funname
#creating a new variable with the calculation
results <- ET(PE.data,constants)
然后错误显示为:
Error: length(time(x)) == length(by[[1]]) is not TRUE
我查看了其他帮助部分,例如 this,但看不出如何实现它以使其在这个内置的 HargreavesSamani 函数上工作。
使用同一包 (Evapotranspiration
) 包中的 ReadInputs
函数预处理您的数据并构建输入数据。
不要自己创建输入数据。
我尝试自己创建输入数据时遇到同样的错误。
我相信使用 ReadInputs
函数是解决这个问题的最佳方法。
希望对您有所帮助。
我正在尝试根据 Hargreaves Samani 方法使用 this package
从气候数据中计算蒸散量我正在处理的 csv 格式数据可用 here,我正在使用的代码(带注释)在
下方## Using Evapotranspiration package to get DAILY PE ###
require(Evapotranspiration)
require(zoo)
#load the constants required from the Evapotranspiration package
data("constants")
#converting the CSV to a zoo object
OakPark<- read.csv("OakParkR.csv", header=TRUE)
#Fill the blanks in the csv with NAs
na.fill(OakPark,NA)
#convert to a zoo
OakPark <- as.zoo(OakPark)
#create a zoo series with the required variables
PE.data <- OakPark[ ,c(3,5)]
#converting to a list as ET function works on a list
PE.data <- as.list(PE.data)
#change constants to the local values
constants$Elev = 62
constants$lat_rad = 0.9226
#defining the function
funname <- "HargreavesSamani"
class(PE.data) <- funname
#creating a new variable with the calculation
results <- ET(PE.data,constants)
然后错误显示为:
Error: length(time(x)) == length(by[[1]]) is not TRUE
我查看了其他帮助部分,例如 this,但看不出如何实现它以使其在这个内置的 HargreavesSamani 函数上工作。
使用同一包 (Evapotranspiration
) 包中的 ReadInputs
函数预处理您的数据并构建输入数据。
不要自己创建输入数据。
我尝试自己创建输入数据时遇到同样的错误。
我相信使用 ReadInputs
函数是解决这个问题的最佳方法。
希望对您有所帮助。