需要解决方案,我们将不胜感激。
在下面的代码中,我创建了三个栅格。然后我创建一个随机的number
该栅格上的点位置,我收到三个矩阵的列表,其中包含这些随机位置的坐标samples
。然后,我获取这些位置和样本栅格值以接收samplevalues
.
我想要改变的是我想创建一组 100,150,200 和 250 个随机点位置(numberv
)。因此,在生成这些位置并接收位置列表后,将对每个栅格进行采样length(numberv)
次(本例中为 4 次)。由于我有三个栅格,那么我想获取一个列表,其中第一个元素包括从三个栅格中每个采样 100 次获得的样本值,第二个元素包含每个采样 150 次的栅格值,依此类推。该列表将有length(numberv)
元素。然后我将使用这些位置来获取这些位置的栅格值。
我为一种更简单的情况粘贴了干净的代码,仅使用一个示例(1 个元素向量number
使用过),希望有帮助。
y <- matrix(1:300,100,3)
mv <- c(1,2,3)
rep = 200
valuematrix <- vector("list",ncol(y))
for (i in 1:ncol(y)) {
newmatrix <- replicate(rep,y[,i])
valuematrix[[i]] <- newmatrix
}
library(sp)
library(raster)
rasters <- setNames(lapply(valuematrix, function(x) raster(x)),
paste0('raster',1:length(mv)))
# Create a loop that will sample the rasters
library(dismo)
number = 100 # current number for random sample points number
numberv = c(100,150,200,250) # sample number vector i want to use
# samples below will hold only coordinate values:
samples <- setNames(lapply(rasters, function(x) randomPoints(raster(x),
n=number)),
paste0('sample',1:length(mv)))
samplevalues <- vector("list",ncol(y))
for (i in 1:ncol(y)) {
samplevalues[[i]] <- data.frame(samples[[i]],extract(rasters[[i]],
samples[[i]]))
}