【问题标题】:How to create 10 random rasters in R?如何在 R 中创建 10 个随机栅格?
【发布时间】:2019-03-10 12:17:18
【问题描述】:

我希望在我计划存储的循环中生成几个随机栅格。我尝试了一些(如下)但它不起作用:

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))}

感谢您的帮助。

【问题讨论】:

    标签: r loops random raster


    【解决方案1】:

    有一个更简单的方法:

    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 是可选的,您也可以使用详细循环。但是像这样,栅格直接存储在一个整洁的列表中。

    【讨论】:

      【解决方案2】:

      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
      

      【讨论】:

      • 谢谢,但是如果我的栅格已经定义并且我只想替换这些值并复制 10 次呢?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-13
      • 2021-03-27
      • 1970-01-01
      • 1970-01-01
      • 2021-07-14
      • 1970-01-01
      • 2022-01-13
      相关资源
      最近更新 更多