我希望在计划存储的循环中生成几个随机栅格。我尝试了以下操作,但不起作用:
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))}
感谢您的帮助。
答案 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