это моя проблема:Вложенные для цикла пропускает петли
У меня есть сетка (см график ниже), и мне нужно получить и хранить в списке координаты каждой вершины каждого блока (ячейки). Порядок блоков, которые мне нужны, это «1-1», ... «4-1», «1-2», «4-2». Чтобы это было просто, я сейчас работаю с индексами.
Основываясь на двух векторах с общими координатами между Востоком и Севером, я написал небольшую функцию, которая частично производит вывод, который мне нужен. Он пропускает ячейки «1-2» и «2-2» (см. Вывод ниже). Я не могу понять, где именно ошибка, но я подозреваю, что проблема в моем вложенном цикле. (Есть много вопросов для цикла, но никто не помог мне с моей проблемой).
Любая помощь будет оценена и извиниться, если это слишком просто, чтобы ее попросили.
векторов:
x.breaks <- c(191789.1, 291789.1, 391789.1)
y.breaks <- c(5172287, 5272287, 5372287, 5472287, 5572287)
Функция:
getting_vertices <- function(x.breaks, y.breaks){
xs <- list()
ys <- list()
polys <- list()
for(i in 1 : (length(x.breaks)-1)){
xs[[i]] <- c(i, i+1 , i+1, i, i)
}
for(j in 1 : (length(y.breaks)-1)){
ys[[j]] <- c(j, j, j+1, j+1, j)
}
for(v in 1 : length(sapply(ys, length))){
for(k in 1: length(sapply(xs, length))){
polys[[v*k]] <- cbind(xs[[k]], ys[[v]])
}
}
return(polys)
}
getting_vertices(x.breaks, y.breaks)
Выход (это отчасти верно):
[[1]]
[,1] [,2]
[1,] 1 1
[2,] 2 1
[3,] 2 2
[4,] 1 2
[5,] 1 1
[[2]]
[,1] [,2]
[1,] 1 2
[2,] 2 2
[3,] 2 3
[4,] 1 3
[5,] 1 2
[[3]]
[,1] [,2]
[1,] 1 3
[2,] 2 3
[3,] 2 4
[4,] 1 4
[5,] 1 3
[[4]]
[,1] [,2]
[1,] 1 4
[2,] 2 4
[3,] 2 5
[4,] 1 5
[5,] 1 4
[[5]]
NULL
[[6]]
[,1] [,2]
[1,] 2 3
[2,] 3 3
[3,] 3 4
[4,] 2 4
[5,] 2 3
[[7]]
NULL
[[8]]
[,1] [,2]
[1,] 2 4
[2,] 3 4
[3,] 3 5
[4,] 2 5
[5,] 2 4