2017-11-10 18 views
0

Rのforループを書きました。これは大丈夫ですが、うまくいきました。しかし私はまた、私が分析でも後でループを操作しなければならないので、私が正確に何をしたのか理解したい。単純なループを説明するR

私はラスターデータ(DEM)を使用しています。ラスタとして環境にロードしてから、ループ内でgetValues関数を使用して計算を行います。次のようになります。

list <- dir(pattern=".tif", full.names=T) 
tif.files <- list() 
tif.files.values <- tif.files 

for (i in 1: length(list)){ 
    tif.files[[i]] <- raster (list[[i]]) 
    tif.files.values[[i]] <- getValues(tif.files[[i]]) 
} 

これまでのところ良いです。ループで使用する前にtif.filesとtif.files.valuesを指定しなければならない理由がわかりません。その理由を正確に指定する理由がわかりません。ラスター操作の最初の部分では、パターンがありました。たぶん誰かが文脈を説明することができます。あなたが行うとき、私は本当にR.

+0

あなたは正常にfor-loopを書いたか、他の人のコードを正常にコピーしたのですが、なぜそれが機能するのかわかりません。 –

+0

私は最後の学期にコースを持っていましたが、今はDEMが1つだけでなく6のリストを持っているので、単純化したいと思っています。 – Thessla

+0

私は 'R'を使っていませんでしたが、基本的には構造を作成し、その値で何かをしてください。私はこれを見つけました。それはすべてをかなりうまく説明しているようです:https://www.datacamp.com/community/tutorials/tutorial-on-loops-in-r –

答えて

0

を理解したい。そして、

tif.files[[i]] <- raster (list[[i]]) 

tif.files[[i]]のでそれはラスタオブジェクトを記憶している、raster(list[[i]])を実行した結果です。このオブジェクトにはメタデータ(エクステント、行数、colsなど)とデータが含まれていますが、tiffが大きければ実際にはそれを読み取ることはできません。

tif.files.values[[i]] <- getValues(tif.files[[i]]) 

その行は、ラスタから値を読み出し、ベクトルを返しラスタオブジェクト、上getValuesを呼び出します。グリッドセルの値はtif.files.values[[i]]になりました。

Rプロンプトでtif.files[[1]]tif.files.values[[1]]を印刷して実験します。

この

注あなたはそれがすべてのボタンとメニューを持って使用しているインターフェースであるR、ないRStudio、です。 R言語はそれなしではとても幸せな存在です。あなたの質問は単なる言語問題です。私は今あなたのためにそれを編集してタグ付けしました。

+0

ありがとう、本当に助かりました! :) – Thessla