Я хочу получить сводную статистику, используя цикл for
в пакете.
#--Zone statistics
zone <- lapply(YieldPts, function(a){extract(NewDatasetRaster[[11]], a)})
# extract zone variable by points
summary(YieldPts)
Length Class Mode
[1,] 8489 SpatialPointsDataFrame S4
[2,] 6300 SpatialPointsDataFrame S4
[3,] 7484 SpatialPointsDataFrame S4
[4,] 8583 SpatialPointsDataFrame S4
[5,] 6761 SpatialPointsDataFrame S4
[6,] 7244 SpatialPointsDataFrame S4
summary(zone)
Length Class Mode
[1,] 8489 -none- numeric
[2,] 6300 -none- numeric
[3,] 7484 -none- numeric
[4,] 8583 -none- numeric
[5,] 6761 -none- numeric
[6,] 7244 -none- numeric
YieldPts
- большой список, содержащий фрейм данных пространственных точек.
NewDatasetRaster
- это растровый стек.
Я использую lapply
для извлечения данных из растрового слоя, который работает нормально.
Но когда я создаю пустой список с именем zone_stat
, а затем использую цикл for
для получения сводной статистики для каждого списка, он выводит нулевые значения для первых пяти списков, что меня смущает:
zone_stat <- list()
for (i in length(YieldPts)) {
zone_stat[[i]] <- aggregate(YieldPts[[i]]$yield,
by=list(zone[[i]]),
FUN=summary)
}
summary(zone_stat)
Length Class Mode
[1,] 0 -none- NULL
[2,] 0 -none- NULL
[3,] 0 -none- NULL
[4,] 0 -none- NULL
[5,] 0 -none- NULL
[6,] 2 data.frame list
Затем я проверил каждый список по отдельности, и он работал нормально:
zone_stat[[1]] <- aggregate(YieldPts[[1]]$yield,
by=list(zone[[1]]),
FUN=summary)
Скажите, пожалуйста, что я делаю неправильно, чтобы избежать этой проблемы.