Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 从循环光栅堆栈中提取单个图层_R_For Loop_Stack_Raster - Fatal编程技术网

R 从循环光栅堆栈中提取单个图层

R 从循环光栅堆栈中提取单个图层,r,for-loop,stack,raster,R,For Loop,Stack,Raster,我有一个18层的光栅堆栈。我需要将所有层提取为单个层。但我不想将这些文件写入磁盘(因此不使用writerater函数)。我只是想把它们放到工作空间。 当我对循环使用时,我得到一个层(最后一个),没有其他层保存到工作区 for(i in 1:nlayers(r)) { X <- r[[i]] } for(1:n层中的i:n层(r)){ X您可以使用unstack和list2env进行此操作: library(raster) s <- stack(replicate(5, rast

我有一个18层的光栅堆栈。我需要将所有层提取为单个层。但我不想将这些文件写入磁盘(因此不使用
writerater
函数)。我只是想把它们放到工作空间。 当我对循环使用
时,我得到一个层(最后一个),没有其他层保存到工作区

for(i in 1:nlayers(r)) {
  X <- r[[i]]
}
for(1:n层中的i:n层(r)){

X您可以使用
unstack
list2env
进行此操作:

library(raster)
s <- stack(replicate(5, raster(matrix(runif(100), 10))))

s
## class       : RasterStack 
## dimensions  : 10, 10, 100, 5  (nrow, ncol, ncell, nlayers)
## resolution  : 0.1, 0.1  (x, y)
## extent      : 0, 1, 0, 1  (xmin, xmax, ymin, ymax)
## coord. ref. : NA 
## names       :     layer.1,     layer.2,     layer.3,     layer.4,     layer.5 
## min values  : 0.011998514, 0.003202582, 0.020602761, 0.023202067, 0.000311564 
## max values  :   0.9814509,   0.9963595,   0.9931403,   0.9766521,   0.9977042

ls()
## [1] "s"

list2env(setNames(unstack(s), names(s)), .GlobalEnv)
ls()
## [1] "layer.1" "layer.2" "layer.3" "layer.4" "layer.5" "s"   
库(光栅)

这是因为你一直在用下一层覆盖
X
,所以..
X
将是最后一层,因为那一层不会被覆盖。把它们保存在
r
中有什么不对?或者你特别需要18个不同的变量吗?所有的层都代表不同的变量,所以我想分别提取它们但是现在我用
r[[I]]
来访问不同的层。你可以用
vars创建单独的变量