Как создать 10 случайных растров в R? - PullRequest
0 голосов
/ 05 октября 2018

Я хочу создать несколько случайных растров в цикле, которые планирую сохранить.Я пытался что-то (ниже), но это не работает:

r1= raster(nrows = 1, ncols = 1, res = 0.5, xmn = -1.5, xmx = 1.5, ymn = -1.5, ymx = 1.5, vals = 0.3)

a<- 10
for (i in 1:length(a)){
values(r1[i]) = round(runif(ncell(r1[i]), 0, 1))}

Спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Существует гораздо более простой способ:

library(raster)

r1 <- raster(nrows = 1, ncols = 1, res = 0.5, xmn = -1.5, xmx = 1.5, ymn = -1.5, ymx = 1.5, vals = 0.3)

rr <- lapply(1:10, function(i) setValues(r1,runif(ncell(r1))))

Это дает вам список rr с 10 случайными растрами.

Использование lapply возможно, вы также можете использовать подробныйпетля.Но вот так растры хранятся прямо в списке.

0 голосов
/ 05 октября 2018

runif() - это хороший подход для генерации случайных значений.функция matrix() - это способ создания растра.Я храню растровые значения в объекте list.

n <- 10
x_length <- 5
y_length <- 5

raster <- list(NULL)
for (i in 1:n){
    raster[[i]] <- round(
      matrix(
        runif(x_length * y_length , 1, 10), 
        x_length, y_length)
      )
}
raster
...