我在一个文件夹中有几个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
我看不到我的错误在哪里。感谢您的帮助。
答案 0 :(得分:0)
您想要执行print(ff[i])
而不是print(ff)
。
ff
是RaxterStack
。 ff[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)