Potrzebujesz rozwiązania, pomoc będzie bardzo doceniana.Wykonywanie pętli na liście list rastrowych
W poniższym kodzie tworzę trzy rastry. Następnie utworzę losowe number
miejsc punktowych na tym rastrze i otrzymuję listę trzech macierzy z współrzędnymi losowych lokalizacji o nazwie samples
. Następnie wybieram te lokalizacje i próbuję wartości rastrowe, aby otrzymać samplevalues
.
Chcę zmienić zestaw 100,150,200 i 250 punktów losowych (numberv
). Więc po wygenerowaniu tych lokalizacji i otrzymaniu listy lokalizacji, każdy raster będzie próbkowany length(numberv)
razy (w tym przypadku 4 razy). Ponieważ mam trzy rastry, chciałbym otrzymać listę z pierwszym elementem, w tym wartości próbki uzyskane z trzech rastrów próbkowanych 100 razy, drugi z wartościami rastrowymi próbkowanymi 150 razy, itd. Lista miałaby elementy length(numberv)
. Następnie użyłbym tych lokalizacji, aby uzyskać wartości rastrowe w tych lokalizacjach.
Wkleiłem czysty kod dla prostszej obudowy za pomocą tylko jednej próbki (użyty wektor 1-elementowy number
), mam nadzieję, że pomoże.
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]]))
}
dziękuję bardzo, dokładnie to, czego potrzebowałem :) – MIH
nie ma za co. –
w jaki sposób można zrestrukturyzować funkcję sample.extract, więc chcielibyśmy przyjrzeć się sample.set [[1]] [2], aby uzyskać wartość rastra z rastrów [1]. Następnie sample.set [[1]] [3] i uzyskaj wartość rastra z rastrów [2]. Wynikiem będzie lista 4 elementów, każdy element będzie listą dwóch elementów. Zadałem nowe pytanie tutaj http://stackoverflow.com/questions/31585708/sampling-with-list-of-rasters-and-locations-using-function-in-r – MIH