我有一個情況,我需要在for循環函數中使用數據框。 在這種情況下,它是「高效」的,但請記住,數據庫很小,並且循環中的迭代非常簡單。但是,也許代碼可能對某些具有類似條件的代碼有用。
的for循環目的是使用光柵提取功能從五個位置(即5東京,紐約,聖保羅秀,瑟&墨西哥城),每個單元有各自的柵格網格。我有一個空間點數據庫,在5個不同的位置分配了1000多個觀測值,我需要從10個不同的柵格網格(每個位置有兩個網格)提取信息。此外,對於後續分析,我不僅需要柵格值,還需要每個觀測值的唯一ID。
製備的空間數據,其中包括以下任務之後:
- 導入點shape文件與readOGR功能(rgdap封裝)
- 導入光柵文件與光柵功能(光柵包)
- 將來自同一位置的柵格堆疊成一個文件,具有功能堆棧(柵格封裝)
這裏與使用一個數據幀的環代碼:每個位置
1.添加堆疊柵格到一個列表
raslist <- list(LOC1,LOC2,LOC3,LOC4,LOC5)
2.創建一個空數據幀,這將是輸出文件
TB <- data.frame(VAR1=double(),VAR2=double(),ID=character())
3.設置循環功能
L1 <- seq(1,5,1) # the location ID is a numeric variable with values from 1 to 5
for (i in 1:length(L1)) {
dat=subset(points,LOCATION==i) # select corresponding points for location [i]
t=data.frame(extract(raslist[[i]],dat),dat$ID) # run extract function with points & raster stack for location [i]
names(t)=c("VAR1","VAR2","ID")
TB=rbind(TB,t)
}
填充'list'代替'data.frame',使之成爲循環後'data.frame'。 – Roland
感謝羅蘭,我是一個n00b,你能否詳細說明一下?如何聲明列表以及如何轉換它? –