【问题标题】:Convert raster into matrix with R用R将栅格转换为矩阵
【发布时间】:2018-01-09 07:05:11
【问题描述】:

我目前正在将原始矩阵转换为栅格以使用焦点功能,然后我想将栅格转换回矩阵。但是当我尝试使用栅格函数 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 库。

感谢您的帮助。

【问题讨论】:

    标签: r raster r-raster


    【解决方案1】:

    确保您使用的是 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)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-06
      • 1970-01-01
      相关资源
      最近更新 更多