Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.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_Gis_Raster - Fatal编程技术网

R 使用行/列索引子集光栅

R 使用行/列索引子集光栅,r,gis,raster,R,Gis,Raster,当对矩阵或DF进行子集设置时,可以引用行列,例如df1[1:5,3:10],或df3[2:4,] 有没有办法用光栅来实现这一点?也就是说,是否可以仅从光栅对象中剪裁500:700行? 我尝试过使用rasterFromCells(),但它并没有给我想要的结果(考虑到R的其他巧妙的子集设置方法,似乎应该有一个更简单的解决方案) 示例: r <- raster(ncols = 50, nrow = 50) r[] <- 1:ncell(r) # I would like to subse

当对矩阵或DF进行子集设置时,可以引用行列,例如
df1[1:5,3:10]
,或
df3[2:4,]

有没有办法用光栅来实现这一点?也就是说,是否可以仅从光栅对象中剪裁500:700行?

我尝试过使用
rasterFromCells()
,但它并没有给我想要的结果(考虑到R的其他巧妙的子集设置方法,似乎应该有一个更简单的解决方案)

示例:

r <- raster(ncols = 50, nrow = 50)
r[] <- 1:ncell(r)

# I would like to subset the bottom 50 rows of cells, but keep it as a raster.
# However, this returns a numeric object.
rSub <- r[30:50, 1:50]  

r我觉得这个问题不是很清楚

然而,这就是你想要的吗

subR <- crop(r, extent(r, 30, 50, 1, 50))

plot(subR)

subR我更喜欢使用西摩所示的crop。还有另一种方法,使用
drop=FALSE

library(raster)
r <- raster(ncols = 10, nrow = 10)
values(r) <- 1:ncell(r)

rSub <- r[3:5, 2:3, drop=FALSE] 
rSub
#class       : RasterLayer 
#dimensions  : 3, 2, 6  (nrow, ncol, ncell)
#resolution  : 36, 18  (x, y)
#extent      : -144, -72, 0, 54  (xmin, xmax, ymin, ymax)
#coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0 
#source      : memory
#names       : layer 
#values      : 22, 43  (min, max)
库(光栅)

r请添加一个最小的可复制示例!您想要单元格值本身还是另一个光栅对象;我增加了一个小例子。我想把它作为一个光栅对象保存。它对我来说不够清晰。有了这个r[30:50,1:50],你就可以对最后20行进行子集划分了,对吗?这正是我想要的。当我最初在光栅文档中阅读它时,我使用“范围”来表示空间范围。对不起,质量问题。再次感谢。我非常确定您也可以使用空间坐标
裁剪
。请注意
范围(r,30,50,1,50))
返回一个空间范围。@gvan如果这是您问题的答案,您应该验证它