У меня есть два списка (lp
и lpara
) с 12000 фреймов данных (те же имена: числа от 1 до 12000). Каждый фрейм данных имеет столбец с месяцами от 1 до 12, длина разная: lp
содержит 468 и lpara
12 строк. Я хочу запустить код в течение 12 месяцев для каждого фрейма данных из списков и записать результат в список.
Сначала я написал код для одного образца списков (lp [[79]]
и lpara[[79]]
) . Сработал следующий код:
results <- data.frame(matrix(vector(), nrow = 12, ncol= 5,dimnames=list(c(),
c("longitude", "latitude", "time", "A", "p.value"))),
stringsAsFactors=F)
#Loop over 12 months for AD
for(i in 1:12){
P <- subset(lp[[79]], month == month[i], select = P)
P <- P[,1]
sh <- as.numeric(subset(lpara[[79]], time == time[i], select = shape))
sc <- as.numeric(subset(lpara[[79]], time == time[i], select = scale))
AD <- ad.test(P, "pgamma", shape= sh, rate = sc)
results$A[i]<- AD[[1]]
results$p.value[i] <- AD[[2]]
results$longitude <- lpara[[79]][,1]
results$latitude <- lpara[[79]][,2]
results$time <- as.numeric(c(1:12))
}
Теперь я хочу запустить l oop более чем на выборке списка и написать второй l oop:
results <- lapply(seq_len(12000), function(x, nr = 12, nc = 5) {data.frame(matrix(,nrow=nr, ncol=nc, dimnames=list(c(), c("longitude", "latitude", "time", "A", "p.value")))) })
#Loop over 12000 Grids
for(j in 1:12000){
#Loop over 12 months for AD
for(i in 1:12){
P <- subset(lp[[j]], month == month[i], select = P)
P <- P[,1]
sh <- as.numeric(subset(lpara[[j]], time == time[i], select = shape))
sc <- as.numeric(subset(lpara[[j]], time == time[i], select = scale))
AD <- ad.test(P, "pgamma", shape= sh, rate = sc)
results[[j]]$A[i]<- AD[[1]]
results[[j]]$p.value[i] <- AD[[2]]
results[[j]]$longitude <- lpara[[j]][,1]
results[[j]]$latitude <- lpara[[j]][,2]
results[[j]]$time <- as.numeric(c(1:12))
}
}
Это не работает, и я не знаю почему. Может кто мне поможет? Было бы здорово!