使用 R 将栅格转换为矩阵

Convert raster into matrix with R

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

r <- raster(ncol=3, nrow=3)
r[] <- 1:ncell(r)
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

我正在使用 RSTUDIO、R 版本 3.4.0 和 ncdf4rasterrgdal 库。

感谢您的帮助。

确保您使用的是 raster 包中的 as.matrix 函数,而不是基本版本。

我假设您使用 libraryrequire:

加载了包
library(raster)
r <- raster()
r[] <- 1:ncell(r)

当我使用 as.matrix 时,它有效:

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

当您使用 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

因此,如果仅加载库对您不起作用,请尝试这样调用函数:raster::as.matrix(r)