如何在R中创建10个随机栅格?

时间:2018-10-05 03:34:55

标签: r loops random 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)

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

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

有一种简单得多的方法:

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,也可以使用冗长的循环。但是像这样,栅格直接存储在整齐的列表中。

答案 1 :(得分:0)

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