0

下面给出的这段代码(由 stackoverflow 用户开发)将从 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"’
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 回答