R: L oop Функция по столбцам и создание новых (именованных) столбцов для каждого выхода функции - PullRequest
0 голосов
/ 20 февраля 2020

Я пытаюсь:

  1. сгенерировать оценки Морана I и P-значения для переменных в столбцах 11:27 части @data элемента SpatialPointsDataFrame для данного года данных (ниже 2016)

  2. повторять (1) для всех лет данных и связывать их вместе: в результате получается полный SpatialPointsDataFrame, который имеет 2 столбца, содержащих эти меры Морана с именем "LM_ (переменная) ) "и" LM (p) _ (переменная) "для каждой из исходных переменных.

Я определил функцию для выполнения первой оценки Морана для подмножества одного года, но могу Не могу понять, как добавить эти столбцы с соответствующими именами в фрейм данных ИЛИ l oop this. См. (Неправильный) код ниже:

OA.2016 <- OA.Merge.1[OA.Merge.1$Year==2016, ]

LM.1 <- function(i){

  LM.i <- localmoran(x = i, listw = nb2listw(neighbours.queen.2016, style = "W", zero.policy=TRUE), zero.policy=TRUE)
  colnames(LM.i) <- c("Estimate","Standard Error","Variance","Z-Score","P-Value")

  LM.i <- LM.i[, c(1)]
  LM.i <- as.data.frame(LM.i)

  OA.2016@data <- cbind(OA.2016@data,LM.i)

}

Затем я пытаюсь применить это (и аналогичную функцию для значения p) в al oop:

for(i in OA.2016@data[11:27]){
  OA.2016[[paste("LM_", i,sep="")]]<-LM.1(OA.2016[[i]])
  OA.2016[[paste("LM(p)_", i,sep="")]]<-LM.2(OA.2016[[i]])
}

В идеале все Этапы можно комбинировать так, чтобы входные данные представляли собой SpatialPolgonsDataFrame с единицей Year // Census-Tract, а выходные данные представляли собой SpatialPolygonsDataFrame с той же единицей и строками, но множеством дополнительных именованных столбцов, содержащих правильные оценки Морана, рассчитанные ТОЛЬКО для переписных участков в указанных c год (следовательно, необходимо указать переменные в подмножестве года, затем l oop по годам и повторно объединить).

ЛЮБАЯ помощь в этом была бы потрясающей! Спасибо.

...