如何用 R 在一个循环中写几个 rasterStack

how to write several rasterStack in a loop with R

我在一个文件夹中有几个 ncdf 文件。我想将它们单独堆叠在一个循环中并在 R 中打印它们的信息。

我有以下代码:

library(raster)
library(ncdf4)

c <- list.files(pattern="nc")
for (i in 1:length(c)){
   ff <- stack(c[i])
   print(ff[i])
}

通过在命令行中输入 ff[1],我希望得到:

class       : RasterStack 
dimensions  : 444, 922, 409368, 10  (nrow, ncol, ncell, nlayers)
resolution  : 0.0625, 0.0625  (x, y)
extent      : 235.375, 293, 25.125, 52.875  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
names       : X1, X2, X3, X4, X5, X6, X7, X8, X9, X10 

但我得到以下信息:

X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
[1,] NA NA NA NA NA NA NA NA NA  NA
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10
[1,] NA NA NA NA NA NA NA NA NA  NA

我看不出我的错误在哪里。感谢您的帮助。

而不是 print(ff[i]),您想 print(ff)

ff 是一个 RaxterStackff[i] 将为您提供单元格 i 的值。

((如果你想要层j,你可以做ff[[j]]))

避免c作为变量名(也是函数)。我愿意

library(raster)
ff <- list.files(pattern="nc")
for (i in 1:length(ff)) {
   s <- stack(ff[i])
   print(s)
}

或更好

for (i in 1:length(ff)) {
   b <- brick(ff[i])
   print(b)
}

或者像这样:

library(raster)
ff <- list.files(pattern="nc")
lapply(ff, brick)