So, after thinking about this a bit, I realized that the previous solution wasn't exactly what I needed. I really needed replacement=F and to be able to choose any sample size (n.sample) less than or equal to the site (row) with the lowest total abundance.
Anyway, I think this works. Forgive me if I have misunderstood something regarding the previous solutions output. I do not pretend to be intelligent. Cheers! ############### start function ############### RAND_L <- function(L.matrix, n.sample){ mainout <- vector("list") for(i in 1:nrow(L.matrix)){ ## decomposes species (1:ncol(L.matrix)) into a list of counts per each out<- vector("list") for(j in 1:length(L.matrix[i,])){ out[[j]] <- rep(names(L.matrix[i,])[j], L.matrix[i,j]) } ## puts previous loop products (counts) in a row out2 <- vector() for(k in 1:length(out)){ out2 <- append(out2, as.character(unlist(out[k]))) } out3<- sample(out2, n.sample, replace=F) mainout[[i]] <- out3 mainout[[i]] <- factor(mainout[[i]], levels= colnames(L.matrix)) } finalout <- t(sapply(mainout, table)) rownames(finalout)<-rownames(L.matrix) return(finalout) } ################### end function ################## > RAND_L(abund2, 100) spA spB spC spD spa spF spG site1 11 12 18 8 0 24 27 site2 24 24 0 0 27 25 0 site3 0 0 6 38 0 0 56 site4 27 20 0 0 16 37 0 -- View this message in context: http://r.789695.n4.nabble.com/Subsampling-out-of-site-abundance-matrix-tp3263148p3265402.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.