使用 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 和 ncdf4
、raster
和 rgdal
库。
感谢您的帮助。
确保您使用的是 raster
包中的 as.matrix
函数,而不是基本版本。
我假设您使用 library
或 require
:
加载了包
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)
我目前正在将原始矩阵转换为栅格以使用焦点函数,然后我想将栅格转换回矩阵。但是当我尝试使用栅格函数 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 和 ncdf4
、raster
和 rgdal
库。
感谢您的帮助。
确保您使用的是 raster
包中的 as.matrix
函数,而不是基本版本。
我假设您使用 library
或 require
:
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)