Benötigen Sie eine Lösung, Hilfe wird sehr geschätzt.Performing Loops auf der Liste der Raster
Im folgenden Code erstelle ich drei Raster. Ich erstelle dann ein zufälliges number
der Punktpositionen auf diesem Raster und ich empfange eine Liste von drei Matrizen mit Koordinaten dieser zufälligen Positionen, die samples
genannt werden. Ich nehme dann diese Orte und Muster Raster-Werte, um samplevalues
zu erhalten.
Was ich ändern möchte, ist, dass ich eine Reihe von 100.150.200 und 250 zufällige Punktpositionen (numberv
) erstellen möchte. Nach dem Erzeugen dieser Orte und dem Empfangen einer Liste von Orten wird daher jedes Raster length(numberv)
Mal (in diesem Fall 4 Mal) abgetastet. Da ich drei Raster habe, möchte ich eine Liste mit dem ersten Element erhalten, einschließlich der Sample-Werte meiner drei Raster, die jeweils 100 Mal gesampelt wurden, die zweite mit Rasterwerten, die jeweils 150 Mal gesampelt wurden. Die Liste hätte length(numberv)
Elemente. Dann würde ich diese Orte verwenden, um die Rasterwerte an diesen Stellen zu erhalten.
Ich eingefügt sauberen Code für einen einfacheren Fall mit nur einer Probe (1 Element Vektor number
verwendet), hoffe es hilft.
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]]))
}
vielen dank, es ist genau das, was ich brauchte :) – MIH
du bist willkommen. –
wie die sample.extract-Funktion restrukturiert werden könnte, also würden wir versuchen, sample.set [[1]] [2] zu nehmen, um Rasterwerte aus Rastern [1] zu erhalten. Dann sample.set [[1]] [3] und erhalte Rasterwert aus Rastern [2]. Das Ergebnis wäre eine Liste von 4 Elementen, jedes Element wäre eine Liste von zwei Elementen. Ich habe eine neue Frage hier http://stackoverflow.com/questions/31585708/sampling-with-list-of-rasters-and-locations-using-function-in-r – MIH