我是一名新程序员。最近我获得了1,850个.nc文件,我将其子集化为480个文件。每个文件名都有一个数字来表示月份。我想做的就是:
我知道这不应该很困难,但我遇到了麻烦。到目前为止,我还没有超越第2步:
library(RNetCDF)
library(raster)
library(rgdal)
files=list.files(pattern='*.nc', full.names=TRUE)
for (i in seq_along(files)){
nc=open.nc(files[i])}
list(nc)
for(i in 1:length(nc)){
rnc<-raster(nc[i])
writeRaster(rnc, filename=names(rnc), bylayer=TRUE, format="GTiff")}
正如大家所知,我仍然是R的新手/学生,我想我已经迈出了第1步,第2步的for循环似乎不起作用。一旦我完成了1和2,我就可以继续工作3(如果你们都能看到第3步的简单答案,请分享)。
谢谢。
答案 0 :(得分:3)
您可以这样做:
library(raster)
library(ncdf4)
files <- list.files(pattern='*.nc', full.names=TRUE)
或者:
s <- stack(files)
rnc <- writeRaster(s, filename="x", bylayer=TRUE, format="GTiff")}
或循环:
for (f in files) {
r <- raster(f)
fout <- extension(f, '.tif')
r <- writeRaster(r, filename=fout, datatype='FLT4S')
}
要获得月平均值,您可以执行以下操作:
months <- stackApply(s, 1:12, mean)
假设文件的顺序正确。