私はRのラスターを使って作業しています。それらのデータを座標から正確に抽出しています。しかし、私の問題は実際にラスタと一緒に働いているわけではなく、いつでも私が仕事をしたいと思っている特定のラスタで読むことと同じです。Rのファイル名に基づいてラスターのサブセットを読み込む
私は35年分のラスタデータを持っていますが、各ラスタの名前はその日付を反映しています。例: "raster.01.01.1990.tif"
すべてのラスタは1つのフォルダにあります。時々、すべてのラスタからデータを抽出する必要があります。その場合は、まっすぐです。 wdを設定し、ラスタのリストを作成し、それらのラスタをRに読み込みます。
setwd("C:/Users/User/Folder/Rasters")
f <- list.files(getwd())
ras <- lapply(f,raster)
問題はありません。私は次に私がする必要があることをすることができます。しかし、時には私はほんの数年しか働かないことがあります。その場合、ファイル名に私が望ましくない年が含まれているかどうかに基づいて、ファイルリストから特定のラスタを除外しています。
setwd("C:/Users/User/Folder/Rasters")
f <- list.files(getwd())
# Choose years to exclude, e.g 2010, 2015, and 2016
f <-f[lapply(f,function(x)length(grep("2010|2015|2016",x,value=FALSE)))==0]
ras <- lapply(f,raster)
このアプローチは機能します。しかし、私はおそらくもっと優雅な解決策があると感じるのを助けることができません。特に、3年間のデータで作業したい場合は、32年分のデータを手動で除外する必要があります。確かにそれはそのが長いと取ることはありません...しかしそれは非効率です。
上記の方法よりもファイル名に基づいてファイルを除外またはインクルードする方が効率的ですか?
ありがとうございました!
改善をありがとう。これは計算上より効率的ですが(私は推測していますが)、別の年を除外するたびにコードを手動で変更していることを意味します。 (公平には、これはおそらく私の部分の設計上の瑕疵であり、私の問題点について十分に説明していない)。 – Savi
@Saviはあなたの質問に答えますか? http://stackoverflow.com/help/someone-answersに続く心 –