用R将栅格转换为矩阵

时间:2017-08-02 07:33:37

标签: r raster r-raster

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

r <- raster(ncol=3, nrow=3)
r[] <- 1:ncell(r)
as.matrix(r)

这是我得到的:

  

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

     

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

我正在使用RSTUDIO,R版本3.4.0和ncdf4rasterrgdal图书馆。

感谢您的帮助。

1 个答案:

答案 0 :(得分:10)

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

我假设您使用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)