R ncdf包 - put.var.ncdf需要不正确的维数

时间:2015-09-08 17:51:09

标签: r netcdf

我正在将天气数据组织到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认为它们是单维变量。

任何人都知道如何解决此错误?

0 个答案:

没有答案