2016-10-14 11 views
-1

別のラスタの値に基づいてRで新しいラスタを作成したいと思います。私がやっていることをされて私はCONツールを使用して、ArcGISでこれを行うことができますが、私は以下R.に方法を見つけるように見えることはできません。上記の'if statement'を使って新しいラスタを作成するR

r<-raster("b1.tif") 
if (r>33){ 
r2<-200 
}else{ 
r2<--0.156*r^2 + 11.2*r + 0.1 
} 

エラーを返して:

Error in if (slp > 33) { : argument is not interpretable as logical 

どこが間違っていますか?

+0

r> 33で何をするつもりですか?あなたは、リンゴとバナナを比較しています。 rはクラス "rasterLayer"のオブジェクトであり、33は整数です。 – Manuel

答えて

0

r < 33 "rasterLayer"クラスのオブジェクトを整数と比較しているため、機能しません。ティフの値(最大値など)を比較する必要があります。

r <- raster("b1.tif") 
if ([email protected]@max > 33){ 
    r2 <- 200 
}else{ 
    r2 <-- 0.156*r^2 + 11.2*r + 0.1 
} 

あなたはTIFFのすべての値にアクセスしたい場合は、操作を行います。これはあなたがあなたの第二のTIFFを作成することができる値に[email protected]@values がによって。 Tiff全体をコピーしたい場合:r <- r2

+0

私はこれを試しました – jmutua

+0

私はこれを試してみましたが、TRUE/FALSEが必要な箇所に '欠損値があります'というエラーが表示され、もう1つの条件に長さ> 1があり、最初の要素のみが使用されます。 – jmutua

+0

plsはあなたがしたいことをより正確に説明します、私は助けることができます..あなたは33と何を比較したいですか? – Manuel

関連する問題