2017-08-02 11 views
3

私は現在、元の行列をラスタに変換してフォーカルファンクションを使用しています。その後、ラスタを行列に戻したいと思います。しかし、ラスター関数as.matrix()を使用しようとすると、エラーメッセージが表示されます。 も、この非常に単純な例で:ここでラスタを行列に変換する

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

は、私が得たものである:配列(X、C(長さ(x)は、1L)で

エラー、(is.null(あれば!名前(X)))リスト(名前(X): 'dimnames' の

長[1]配列の程度に等しくない

IはRSTUDIO、Rバージョン3.4.0を使用してncdf4よ、rasterおよびrgdalのlibrairies。

ありがとうございました。

答えて

4

基本バージョンではなく、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)

+0

問題解決済み、ありがとうございました... –