我目前正在将原始矩阵转换为栅格以使用焦点函数,然后我想将栅格转换回矩阵。但是当我尝试使用栅格函数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和ncdf4
,raster
和rgdal
图书馆。
感谢您的帮助。
答案 0 :(得分:10)
确保您使用as.matrix
包中的raster
功能,而不是基本版。
我假设您使用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)