我正在将天气数据组织到R中的netCDF文件。一切顺利,直到我尝试用数据填充netcdf变量,因为它要求我只为二维变量指定一个维度。
library(ncdf)
这些是变量的维度标记。每个变量都使用Threshold
维度和其他两个维度之一。
th <- dim.def.ncdf("Threshold", "level", c(5,6,7,8,9,10,50,75,100))
rt <- dim.def.ncdf("RainMinimum", "cm", c(5, 10, 25))
wt <- dim.def.ncdf("WindMinimum", "m/s", c(18, 30, 50))
变量是在循环中创建的,并且有很多变量,所以为了便于理解,在我的例子中我只用一个变量填充变量列表。
vars <- list()
v1 <- var.def.ncdf("ARMM_rain", "percent", list(th, rt), -1, prec="double")
vars[[length(vars)+1]] <- v1
ncdata <- create.ncdf("composite.nc", vars)
我使用另一个循环将来自不同数据文件的数据提取到名为subframe
的9x3数据框中,同时使用varindex
迭代netcdf文件的变量。为了复制,我将对这些值进行快速初始化。
varindex <- 1
subframe <- data.frame(matrix(nrow=9, ncol=3, rep(.01, 27)))
期望的结果是使用subframe
的内容填充每个ncdf变量。这样做的代码是:
for(x in 1:9) {
for(y in 1:3) {
value <- ifelse(is.na(subframe[x,y]), -1, subframe[x,y])
put.var.ncdf(ncdata, varindex, value, start=c(x,y), count=1)
}
}
错误消息是:
Error in put.var.ncdf(ncdata, varindex, value, start = c(x, y), count = 1) :
'start' should specify 1 dims but actually specifies 2
tl; dr:我在R中使用ncdf定义了二维变量,我正在尝试向它们写入数据,但我收到一条错误消息,因为R认为它们是单维变量。
任何人都知道如何解决此错误?