Jens Oldeland wrote: > > I am looking for a solution on how to sample increasing sizes of > "quadrats" in a list of matrices. Each matrix is a binary raster map and > I want to know if there is a 1 or only 0 s in the sampling unit > (quadrat, e.g. 4x4 cells). >
You could just use a few loops to index the submatrices/quadrats, maybe something like this. set.seed(7) x<-matrix(sample(c(0,1), 256, replace=TRUE, prob=c(.8,.2)), nrow=16, byrow=TRUE) # matrix size (16) n<-nrow(x) #quadrat sizes (1 2 4 8 16) q<- 2^(0:sqrt(n)) # store results in list quads<-vector("list", length(q) ) names(quads)<-q for (i in 1:length(q) ) { z<-c() for(j in 1:(n-q[i]+1) ) { for(k in 1:(n-q[i]+1)) { y<-x[j:(j+q[i]-1), k:(k+q[i]-1)] #do something with submatrix z<-c(z, ifelse( sum(y)>0, 1,0)) #z<-c(z, sum(y) ) } } quads[[i]]<-z } #empty quads sapply(quads, function(x) sum(x==0)) 1 2 4 8 16 206 91 3 0 0 # total number of quadrats sampled sapply(quads, length) #or (n-q+1)^2 For random sampling, try replacing 1:(n-q[i]+1) with sample( 1:(n-q[i]+1), replace=TRUE) ? Also, if you have a list of matrices, then maybe combine the code above into a function and then apply it to your list using lapply. Chris Stubben -- View this message in context: http://www.nabble.com/sampling-quadrats-of-increasing-size-in-a-list-of-matrices-tp24270434p24276950.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.