下面给出的代码(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"’
答案 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,这意味着如果你在下次删除之前生成的文件时启动循环。