2016-05-10 3 views
0

私は最近、rasterパッケージからsetValues()フォームを見つけましたが、この機能の使用例は何か不思議です。setValuesラスタの使用例

r  <- raster(ncol=10, nrow=10) 

#setValues Function 
r  <- setValues(r, values=1, index=10) 

#Normal indexing 
r[10] <- 1 

両方の方法で同じ結果が得られます。しかし、ドキュメントは述べている:

あなたは直接オブジェクトの「値」スロットにアクセスすることができますが、あなた 値を設定する際に、複数の スロットを変更する必要があるため、あなた自身の危険を覚悟でそれを行うだろう。これらの機能が果たす機能です。

ここでは、perilの意味は何ですか?また、setValues関数ではなく通常のサブセットを使用するとき、またはパフォーマンスの面で利点がある場合、どのスロットが変更されないままになりますか?

+0

著者が直接の修正'値'スロットでは、次のようなことはしません。 'r < - raster(matrix(1:9、nc = 3)); r @ data @ values < - 100 *(1:9) 'となります。あなたがそのような猿のように、低レベルのデータ構造を直接変更する場合、あなたはそれを直接認識することなく、あなたのために行われた素敵なものをたくさんバイパスしています。 'values'データスロットの直前と直後に' minValue(r) 'を実行してみてください。そして 'setValues'があなたのために行うことをより詳細に見るために、' getMethod( "setValues"、 "RasterLayer") 'を実行してください。 –

+0

注意:コードブロックの2番目と3番目のコード行は、実際には全く同じことをしていません。 –

答えて

1

setValuesの基本的な使用例は、セル値のベクトルを(おそらく空の)RasterLayerに割り当てる場合です。例えば。

library(raster) 
r <- raster(ncol=10, nrow=10) 
r <- setValues(r, 1:100) 

よりR-慣用変動が

values(r) <- 1:100 

インデックスは一般的に数個の細胞

r[1:5] <- NA 

のために使用されているしかし、あなたはまた、すべてのセルの値を設定するために使用することができている

r[] <- 1:100 
関連する問題