Короче говоря, я хочу знать:
Каким образом можно было бы перебрать несколько SPDF и выполнить вычисления для каждой строки в их таблицах атрибутов?
Некоторые подробности: у меня есть несколько SPDF и Я могу перебирать полигоны каждого из них, используя что-то вроде:
x = readOGR(...)
for (i in 1:length(x)){
x$Volume_Norm[i] <- x$Volume[i]/max(pre_max)
x$Volume_Sqrt[i] <- sqrt(x$Volume_Norm[i])
x$Volume_Thrd[i] <- nthroot(x$Volume_Norm[i], 3)
x$HAZARD_1[i] <- x$Volume_Thrd[i] * x$HAZARD_NEW[i]
}
Но я не знаю, как я мог бы превратить это в функцию apply или что-то подобное, чтобы она работала на всех моих SPDF и мне не нужно менять имена в for-l oop отдельно.
Если я попытаюсь:
list <- list(x, y, z) # these are my SPDFs
fun <- function(x){
for (i in 1:length(x)){
x$Volume_Norm[i] <- x$Volume[i]/max(pre_max)
x$Volume_Sqrt[i] <- sqrt(x$Volume_Norm[i])
x$Volume_Thrd[i] <- nthroot(x$Volume_Norm[i], 3)
x$HAZARD_1[i] <- x$Volume_Thrd[i] * x$HAZARD_NEW[i]
}
}
lapply(list, fun)
, ничего не изменится, и я получу:
> lapply(list, fun)
[[1]]
NULL
[[2]]
NULL
[[3]]
NULL