0

あなたが私を助けてくれることを願っています。複数のラスター データセットを R にインポートし、インポートした各ラスター データの欠損値を再コード化し、それらを郵便番号にリンクしてから、各ラスター データを異なる名前の csv ファイルとしてエクスポートしようとしています。ループを使用しようとしていますが、これまでのところエラーしかありません。これは私が得た限りです(笑わないでください):

24 個のラスター データセットすべてをインポートする

file_names=as.list(dir(pattern="home.*"))
listy<-lapply(file_names,raster, band=1)
names(listy) <- paste0("hour", seq_along(0:23))

これで、すべてのラスター データセットがリスト (listy) に含まれるようになり、それぞれに対して次のコマンドを実行するだけで済みます。

listy の要素 1 の例

listy$hour1_r<-listy$hour1
listy$hour1_r[listy$hour1_r==9999]<-NA
y <- extract(listy$hour1_r, zipcoords)
hour1_zipcode <- cbind(zipid,y)
write.table(hour1_zipcode,file="home\\hour1.csv",sep=",",row.names=F)

ループでこれを行うにはどうすればよいですか? あなたが持っているかもしれない提案があれば、私は非常に感謝しています!

ありがとうございました!!!メートル

4

2 に答える 2

0

コマンドから関数を作成します。

f <- function(listy,filename) {
  listy$hour1_r<-listy$hour1
  listy$hour1_r[listy$hour1_r==9999]<-NA
  y <- extract(listy$hour1_r, zipcoords)
  hour1_zipcode <- cbind(zipid,y)
  write.table(hour1_zipcode,file=filename,sep=",",row.names=F)
}

すべての要素に対してコマンドを実行します。

mapply(f, listy, filename= paste0("home\\hour",seq_along(listy),".csv"))

実際には何も返したくないmapplyので、見えないようにラップすることができます:

invisible(mapply(f, listy, filename= paste0("home\\hour",seq_along(listy),".csv")))

for ループでこれを行うこともできます。

filenames = paste0("home\\hour",seq_along(list),".csv")
for (i in seq_along(listy)) f(listy[[i]],filenames[[i]])
于 2014-07-28T13:42:04.613 に答える