5
需要解决方案,非常感谢您的帮助。在栅格列表上执行循环
在下面的代码中,我创建了三个栅格。然后我在这个光栅上创建一个点位置的随机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]]))
}
非常感谢,这正是我需要的:) – MIH
不客气。 –
如何重构sample.extract函数,因此我们将考虑使用sample.set [[1]] [2]从rasters [1]中获取栅格值。然后sample.set [[1]] [3]并从栅格[2]中获取栅格值。结果将是一个4个元素的列表,每个元素将是一个两个项目的列表。我在这里发布新的问题http://stackoverflow.com/questions/31585708/sampling-with-list-of-rasters-and-locations-using-function-in-r – MIH