Вот способ tidyverse
.
Повторное использование X
от @Edward:
X <- matrix(rnorm(25, mean=12, sd=10), nr=5); X
rownames(X) <- c("36.2N","33.8N","31.2N","28.8N","26.2N")
colnames(X) <- c("113.8W","111.2W","108.8W","106.2W","103.8W")
И список таких матриц:
ll <- list(jan = X, feb = X, mar = X, apr = X)
Тогда Вы можете переформатировать с помощью:
ll %>%
map(~ as_tibble(., rownames = "lat")) %>%
map(~ pivot_longer(.,
cols = -lat,
names_to = "long",
values_to = "avg")) %>%
bind_rows(.id = "month")
Что касается вашего дополнительного вопроса, в большинстве случаев вам, вероятно, лучше оставить широту и долготу в отдельных столбцах.