親愛的人,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