亲爱的人,stackoverflow。在for循环中计算R中多边形的面积
我想计算一个SPDF的每个单独的多边形的面积。我正在尝试制作一个功能,它允许我将数据输入并获取一个区域列表。我坚持创建一个返回我的多边形的所有区域的for循环。对于一个多边形的表面计算下面的代码工作:
surfacefirstpolygon <- gArea(inputSPDF[1,1])
此代码打印由一个我的一个当我运行下面的代码。
polys <- slot(inputSPDF,"polygons")
for(i in 1:length(polys)){
print(i)
}
然后我试图把这些碎片的代码一起在for循环中执行以下操作:
polys <- slot(inputSPDF,"polygons")
areasofpolygons <- for(i in 1:length(polys)){
gArea(inputSPDF[i,i])
}
这不工作,给我下面的错误。
错误is.projected(spgeom):在评价选择用于功能 'is.projected' 的方法 'OBJ' 参数 错误:在[.data.frame
错误(X @数据,I,J,..., drop = FALSE): 未定义的列被选中。
有人知道发生了什么问题吗?
结果=
dd = dim(inputSPDF)
for(i in 1:dd[1]){
areasofpolygons[i] <- gArea(inputSPDF[i,1])
}
我想这可能是因为列表无法将它们置于彼此之下。所以我尝试了以下也不起作用: test < - list() for(i in 1:length(polys)){ test [i] < - gArea(gem_ned_LAEA [i,i]) } – Zuenie 2014-09-03 08:47:02
什么是数据和gArea?这是不可复制的!顺便说一句:R中没有列表理解机制,你试图这样做。看看[应用功能](http://nsaunders.wordpress.com/2010/08/20/a-brief-introduction-to-apply-in-r/)来实现这样的事情。 – 2014-09-03 08:58:03
数据是我的输入数据,gArea是计算多边形表面的包rgeos的函数。感谢您申请链接。现在看看它。 关于可重复性:我正在使用SpatialPolygonDataFrame。从头开始制作一个并不容易。在我问的另一个问题中,我将脚本链接到了保存箱,并让人们从我的保存箱中下载我的shapefile文件。然后我得到了这可能是不安全的评论。我不知道如何使它成为一个更好的可重复的脚本。 – Zuenie 2014-09-03 09:01:11