首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >subs {raster}函数不工作

subs {raster}函数不工作
EN

Stack Overflow用户
提问于 2016-06-08 22:13:32
回答 1查看 184关注 0票数 2

我有一个栅格层,单元格值为0、0.9和1,数据帧的第一列为单元格ID,第二列为值0.936。(将来,第二列中的这些值可能有所不同,因此我确实需要用数据帧中的相应值替换特定的单元格)

在Gen_raster中,我希望替换单元格的单元格值,该单元格与new_values1with的ID和值new_values2相匹配。

我试着用subs()函数(光栅包)来做这件事,但是由于某种原因,值new_values1与Gen_raster的单元ID不匹配,因此Gen_raster的单元值不会发生任何变化。

我尝试使用subs()函数作为一个具有类似特性的示例(也使用栅格层和带有两列int和num的数据帧),这是可行的。这是我使用的代码以及光栅层和数据帧的特点:

代码语言:javascript
复制
Gen_raster1<-subs(Gen_raster, new_values, subsWithNA=FALSE)    

其中Gen_raster:

代码语言:javascript
复制
    class       : RasterLayer 
    dimensions  : 401, 292, 117092  (nrow, ncol, ncell)
    resolution  : 0.04166667, 0.04166667  (x, y)
    extent      : -79.04166, -66.87499, -4.249997, 12.45834  (xmin, xmax, ymin, ymax)
    coord. ref. : NA 
    data source : in memory
    names       : layer 
    values      : 0, 1  (min, max)

和new_values:

代码语言:javascript
复制
     'data.frame':  50 obs. of  2 variables:
     $ id: int  7444 7446 7735 7745 8331 8924 9185 9473 13261 13554 ...
     $ v : num  0.936 0.936 0.936 0.936 0.936 ...

这是我所用并确实起作用的例子:

代码语言:javascript
复制
    r <- raster(ncol=10, nrow=10)
    r[] <- round(runif(ncell(r)) * 10)
    df <- data.frame(id=2:8, v=c(10.003,10.03,11.006,11,12:14))
    x <- subs(r, df)
    x2 <- subs(r, df, subsWithNA=FALSE)

我不明白这两种方法有什么区别,因此我不明白为什么new_values和Gen_raster的单元ID不匹配。

有人有什么建议吗?会帮到我很多..。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-08 22:30:22

subsGen_raster中的单元格值(0、0.9、1)与new_values的第一列(id)匹配。好像没有火柴。

如果我很了解你,你想要的是:

代码语言:javascript
复制
Gen_raster[new_values$id] <- new_values$v
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37713835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档