0

以下に示すこのコード ( stackoverflow ユーザーによって開発された) は、netcdf ファイルから変数を読み取り、env ファイルとして書き込みます。
このコードは正常に動作していますが、このような netcdf ファイルがいくつかあり、ディレクトリ内のすべてのファイルに対してこれを行うループを作成したいと考えています。
ファイルは、パスが次のディレクトリに保存されます。

d <-  flip(t(d), direction = "x") 
rf <- writeRaster(d, filename="last.envi", overwrite=TRUE)

私はこれを試しました:

for(i in 1:length(a)){
    d <- raster(a[i], varname = "soil_moisture_c")
    rf <- writeRaster(d[[i]], filename="%d.envi", overwrite=TRUE)
    }

しかし、このエラーが発生しました

Error in function (classes, fdef, mtable) : 
unable to find an inherited method for function ‘writeRaster’ for signature ‘"numeric", "character"’
4

1 に答える 1

4

2 つのバグ : d[[i]] を d で変更し、入力ごとに新しい出力ファイルを使用します。

 fileName <- strsplit(a[i],split='\\.')[[1]][1]
 outputFile <- paste(fileName,'_amenlast','.envi',sep='')
 rf <- writeRaster(d, filename=outputFile, overwrite=TRUE)

PS : overwrite=TRUE を維持します。つまり、次回ループを起動すると、以前に生成されたファイルが消去されます。

于 2012-12-05T15:11:34.287 に答える