2014-12-15 4 views
0

У меня есть два набора растровых стеков (каждый с несколькими сотнями растровых слоев). Первый - это растровый стол, содержащий набор изображений с временными рядами (с зазором) и второй стек временного интерполированные изображения для промежутков первого множества. Именование слоев в каждом наборе соответствует дню, когда они измеряются/или интерполируются, начиная с 1-го дня .... nR: изменить порядок слоев в растровой таблице

Теперь я хочу объединить эти два набора в один упорядоченный (от 1 до n согласно слой имя) растровый сток. Я изучил разные способы сделать это, но не смог получить результаты; .

  • Способ заказать слои в пределах rasterstack (например, используя что-то вроде этого (comb_r это растровый стек из моего воспроизводимого примера ниже) Это упорядочивает имена, но не целые слои:

    names(comb_r)<-comb_r[order(names(comb_r))] 
    
  • создать два списка слоев в обоих стеков с помощью разборки стопки функции и чем создать объединенный упорядоченный список в качестве входных данных для новой операции стека (не получить эту работу).

  • , наконец, я предполагаю, что я может сэкономить все слои на жесткий диск и чем собирать стек оттуда (учитывая, что многие слои, вероятно, не лучший путь вперед).

Любые предложения о том, как действовать, будут приветствоваться. Я добавил пример игрушка моей проблемы здесь:

library(raster) 

r1 <- raster(matrix(runif(9), ncol = 3)) 
r2 <- raster(matrix(runif(9), ncol = 3)) 
r3 <- raster(matrix(runif(9), ncol = 3)) 
r4 <- raster(matrix(runif(9), ncol = 3)) 
r5 <- raster(matrix(runif(9), ncol = 3)) 

r <- stack(r1, r2, r3,r4,r5) 
names(r)<-c(1,4,6,8,10) 

r6 <- raster(matrix(runif(9), ncol = 3)) 
r7 <- raster(matrix(runif(9), ncol = 3)) 
r8 <- raster(matrix(runif(9), ncol = 3)) 
r9 <- raster(matrix(runif(9), ncol = 3)) 
r10 <- raster(matrix(runif(9), ncol = 3)) 

    rr <- stack(r6,r7,r8,r9,r10) 

names(rr)<-c(2,3,5,7,9) 

comb_r<-stack(r,rr) 

ответ

2

Вы можете не только взять «подмножество» в другом порядке:

subset(comb_r, order(c(1,4,6,8,10,2,3,5,7,9)) 

Вы можете выбрать второй аргумент «подмножество» в отразите желаемый порядок - тот, который вы дали, немного странно, поскольку он принимает один из r, затем два из rr, затем чередуется с r и rr.

0

Это должна работать:

ReorderStack<- stack(comb_r[[1]],comb_r[[4]],comb_r[[6]],comb_r[[8]],comb_r[[10]], 
        comb_r[[2]], comb_r[[3]],comb_r[[5]],comb_r[[7]],comb_r[[9]]) 
Смежные вопросы