2016-02-11 35 views
1

我有一个栅格内的单元格列表,我希望更改单元格的值(同时保留所有其他单元格)。我已经复制了一些测试(可重现)的代码,下面我已设法开始工作。它生成测试栅格,并且,在丘壑定义的细胞,改变细胞的50无法更新R栅格中的单元值

# My List of Cells That Require Changing 
vals<-c(2,4,6,10,15,27) 

#Example Raster 
r <- raster(ncol=6, nrow=6) 
r[] <- 1:ncell(r) 
plot(r) 


#Change Cell Values 
r[r%in%c(vals)] <- 50 
plot(r) 

值到目前为止,一切都很好。但是,当我将相同的代码应用于实际生活数据时,我无法更改单元格值。代码运行非常好(根本没有错误消息),但单元格值不会改变。

我的第一个问题是之前是否有其他人遇到过这个问题?我的第二个问题是:我向StackOverflow社区提供真实示例的最佳方式是什么,以便有人可以帮我解决问题?我担心,如果不使用我的数据集,这个问题将一直没有解决。我已经读过,使用r [r%in%c(vals)] < - 50对于大型栅格可能是不稳定的记忆方式,但我不确定这是否与我的例子一致(我的栅格是牙买加的图像,只包含4185个单元,并且在运行代码时,我没有注意到RAM使用中有任何尖峰)。

任何援助,你可以提供将不胜感激。

回答

0

你可以试试这个替代方法:

rcl <- cbind(from = vals, to=50) 
x <- reclassify(r, rcl) 

如果这也不行,它会建议你要替换的值是不实际的数据

+0

罗伯特·您好,感谢您回复。我已经尝试了上述,它不工作 - 代码运行没有错误,但我的情节不显示更改。我从我想更新的栅格中生成我的单元格列表(vals)。因此,我想不出为什么我试图更新值的单元格不在我的栅格中。 – Simon

+0

这里有些额外的信息可能会有所帮助。 我用cellFromXY来标记包含物种出现记录的所有单元格。我试图改变这些细胞。最终的目标是使用“距离”函数来计算距离曲面。 – Simon

+0

'cellFromXY'为您提供细胞数量,而不是细胞数值。如果你有细胞数量,你可以做'r [cellnumbers] < - 50' – RobertH

相关问题