我无法正确编写switch语句。而可用的例子是没有用的。基本上,声明应该检查单元格中的值(选择:1,2,4,8,16,32,64,128)并基于增加/减少行和列的数量。一些switch语句有2个计算。如何在R中编写switch语句?
library(raster)
fdr<-raster("fdr.tif")
row1<-50
col1<-50
cell1<-fdr[row1,col1] #The point of origin
switch (cell1,
4={row2 = row1 + 1
},
2={row2 = row1 + 1 & col2 = col1 + 1
},
1={col2 = col1 + 1
},
128={row2 = row1 - 1 & col2 = col1 + 1
},
64={row2 = row1 - 1
},
32={row2 = row1 - 1 & col2 = col1 - 1
},
16={col2 = col1 - 1
},
8={row2 = row1 + 1 & col2 = col1 - 1
}
)
我对开关语句以外的其他技术也很开放。或者有任何想法让它更快。最后我会将其包装到一个函数中,并为每个单元格(像素)执行此操作。
数据:
FDR光栅(小文件):https://www.dropbox.com/s/7o3y8w01y6zqqwm/fdr.tif?dl=0
概念水流方向:http://courses.washington.edu/gis250/lessons/hydrology/index.html#coded
我认为你需要返回一个向量没有尽管你可以使用'<< - '做到这一点。 –
谢谢。如果你可以提供更多的信息,这将是有益的,我不知道如何继续。 – maximusdooku
我试着用<< - 替换所有=。虽然代码运行没有错误,但我没有看到任何名为col2的输出,row2 – maximusdooku