【发布时间】:2016-12-07 12:38:01
【问题描述】:
我是新手,也是使用 R 的初学者。 那是我的问题:
我有一个包含很多单元格的大型栅格。这是一个二进制栅格,所以只有 0 和 1。我必须遍历整个光栅并找到 0。如果单元格 [i,j] 是 0,那么我需要成对查看它的 4 个邻居。
我只是想用一个小的 7x7 矩阵试试这个。
我的想法是使用这样的循环:
nr3=0
for (i in 1:7)
{for (j in 1:7)
{if (m[i,j]==0)
{if (m[i-1,j]!=0&&m[i,j-1]!=0)
{nr3++}
if (m[i-1,j]!=0&&m[i,j+1]!=0)
{nr3++}
if (m[i,j+1]!=0&&m[i+1,j]!=0)
{nr3++}
if (m[i+1,j]!=0&&m[i,j-1]!=0)
{nr3++} }}}
所以它必须是这样。 但是有这个错误:
Error in if (m[i-1,j]!=0&&m[i,j-1]!=0 {: missing value where TRUE/FALSE needed
我可以看到问题。在边界处,您无法比较所有邻居。 这就是为什么我尝试使用
for (i in 2:6)
for (j in 2:6)
成功了。但问题是缺少一些。
那我该怎么办? 顺便说一句,我希望有另一种可能性来解决这个任务。也许我不需要循环?我可以想象这对于一个非常大的栅格来说不是一个很好的解决方案。 有人有想法吗?
【问题讨论】:
-
你应该澄清你的意思是“需要成对地看它的 4 个邻居”.. 你在看他们什么?你期望什么输出?最好用文字说明这一点,而不是让我们从您的代码中找出您的意图。
标签: r loops matrix binary raster