我需要在R中创建一个三维数组,其中包含分辨率为538x907像素的栅格数据。我在一个月内每小时都有这个光栅,因此1月份有744个光栅文件。我必须用R更改一些值,然后想要将它们汇总回一个可以由包ncdf4处理的数组。因此,我需要创建一个看起来像prectdata[1:538, 1:907, 1:744]
的三维数组(第一个和第二个用于栅格的x和y维度,第三个用于时间维度)。如何将744栅格矩阵连接到包ncdf4的三维数组?
答案 0 :(得分:1)
raster
包有一个名为as.array
的函数,它应该可以满足您的需求:
library(raster)
# single raster
r <- raster(matrix(runif(538*907),nrow =538))
# stack them
rstack <- do.call(stack,lapply(1:744,function(x) r))
# structure
> rstack
class : RasterStack
dimensions : 538, 907, 487966, 744 (nrow, ncol, ncell, nlayers)
resolution : 0.001102536, 0.001858736 (x, y)
extent : 0, 1, 0, 1 (xmin, xmax, ymin, ymax)
coord. ref. : NA
# convert to array
arr <- as.array(rstack)
# check dimensions
> dim(arr)
[1] 538 907 744