2017-08-02 2 views
3

Je suis actuellement convertir la matrice originale en un raster pour utiliser la fonction focale, puis je voudrais convertir le raster en matrice. Mais j'ai un message d'erreur lorsque j'essaie d'utiliser la fonction raster as.matrix(). Même avec cet exemple très simple:Convertir raster en matrice avec R

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

Voici ce que je suis:

Erreur dans le tableau (x, c (longueur (x), 1 litre), si (is.null (! noms (x))) liste (noms (x),:

longueur de

'dimnames' [1] ne correspond pas à matrice étendue

J'utilise rstudio version 3.4.0 et R ncdf4 , raster et rgdal librairies.

Nous vous remercions de votre aide.

Répondre

4

Assurez-vous que vous utilisez la fonction as.matrix du package raster, et non la version de base.

Je suppose que vous avez chargé le paquet avec library ou require:

library(raster) 
r <- raster() 
r[] <- 1:ncell(r) 

Quand j'utilise as.matrix, cela fonctionne:

> str(as.matrix(r)) 
int [1:180, 1:360] 1 361 721 1081 1441 1801 2161 2521 2881 3241 ... 

Lorsque vous utilisez la version de base de as.matrix, vous obtiendrez exactement ce message d'erreur:

> 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 

Donc, si le chargement de la bibliothèque ne fonctionne pas pour vous, essayez d'appeler la fonction comme ceci: raster::as.matrix(r)

+0

Problème résolu, merci ... –