【发布时间】:2016-02-17 13:11:35
【问题描述】:
我有一个 18 层的 RasterStack。我需要将所有图层提取为单独的图层。但我不想将这些文件写入磁盘(所以不使用writeRaster 函数)。我只想将它们提取到工作空间。
当我使用for 循环时,我得到一个层(最后一层),并且没有其他层被保存到工作区。
for(i in 1:nlayers(r)) {
X <- r[[i]]
}
我在这个循环中缺少什么?
【问题讨论】:
-
那是因为你不断用下一层覆盖
X,所以..X将是最后一层,因为那一层不会被覆盖。将它们保留在r有什么问题?还是您特别需要 18 个不同的变量? -
所有层都代表不同的变量,所以我想分别提取它们。但现在我使用
r[[i]]来访问不同的层。 -
好吧,您可以使用
vars <- paste0("X",1:18); for (i in 1:18) assign(vars[i],r[[i]])创建单个变量。这将创建 18 个变量(X1到X18)。但是,请记住,从那时起,您将拥有 18 个独立的对象,这使得自动化变得比使用r[[i]]困难得多。另请阅读:stackoverflow.com/a/17559641/5805670