问题描述
我目前正在将原始矩阵转换为栅格以使用焦点函数,然后我想将栅格转换回矩阵.但是当我尝试使用光栅函数 as.matrix() 时出现错误消息.即使是这个非常简单的例子:
I'm currently convert original matrix into a raster to use the focal function, then I would like to convert back the raster into matrix. But I have an error message when I try to use the raster function as.matrix().Even with this very simple example:
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] 的长度不等于数组范围
length of 'dimnames' [1] not equal to array extent
我正在使用 RSTUDIO、R 版本 3.4.0 和 ncdf4
、raster
和 rgdal
库.
I'm using RSTUDIO, R version 3.4.0 and ncdf4
, raster
and rgdal
librairies.
感谢您的帮助.
推荐答案
确保您使用的是 raster
包中的 as.matrix
函数,而不是基础版本.
Make sure that you're using the as.matrix
function from the raster
package, not the base version.
我假设你用 library
或 require
加载了包:
I assume you loaded the package with library
or require
:
library(raster)
r <- raster()
r[] <- 1:ncell(r)
当我使用 as.matrix
时,它可以工作:
When I use as.matrix
, it works:
> str(as.matrix(r))
int [1:180, 1:360] 1 361 721 1081 1441 1801 2161 2521 2881 3241 ...
当您使用 as.matrix
的基本版本时,您将收到以下错误消息:
When you use the base version of as.matrix
, you'll get exactly this error message:
> 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)
So if only loading the library doesn't work for you, try calling the function like this: raster::as.matrix(r)
这篇关于使用 R 将栅格转换为矩阵的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!