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