用R将栅格转换为矩阵

Chr*_*sse 6 r raster r-raster

我目前正在将原始矩阵转换为光栅以使用焦点功能,然后我想将光栅转换回矩阵.但是当我尝试使用栅格函数as.matrix()时,我有一条错误消息.即使有这个非常简单的例子:

r <- raster(ncol=3, nrow=3)
r[] <- 1:ncell(r)
as.matrix(r)
Run Code Online (Sandbox Code Playgroud)

这是我得到的:

数组中的错误(x,c(length(x),1L),if(!is.null(names(x)))list(names(x),):

'dimnames'[1]的长度不等于数组范围

我使用RSTUDIO,R版本3.4.0和ncdf4,rasterrgdallibrairies.

谢谢您的帮助.

Val*_*Val 10

确保您使用的as.matrixraster包中的功能,而不是基本版本.

我假设你用library或加载了包裹require:

library(raster)
r <- raster()
r[] <- 1:ncell(r)
Run Code Online (Sandbox Code Playgroud)

当我使用时as.matrix,它的工作原理:

> str(as.matrix(r))
 int [1:180, 1:360] 1 361 721 1081 1441 1801 2161 2521 2881 3241 ...
Run Code Online (Sandbox Code Playgroud)

当您使用基本版本时as.matrix,您将收到以下错误消息:

> base::as.matrix(r)
Error in array(x, c(length(x), 1L), if (!is.null(names(x))) list(names(x),  : 
  length of 'dimnames' [1] not equal to array extent
Run Code Online (Sandbox Code Playgroud)

因此,如果仅加载库不适合您,请尝试调用以下函数: raster::as.matrix(r)