如何创建一个循环来读取几个nc文件作为栅格,然后将它们写为envi?

时间:2012-12-05 14:05:07

标签: r raster netcdf rgdal envi

下面给出的代码(developed by stackoverflow users)将从netcdf文件中读取一个变量并将其写为envi文件。
这段代码工作正常,但我有几个这样的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"’

1 个答案:

答案 0 :(得分:4)

2个错误:用d更改d [[i]]并为每个输入使用新的输出文件。

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

PS:我保持overwrite = TRUE,这意味着如果你在下次删除之前生成的文件时启动循环。