[R] Subsampling out of site*abundance matrix
B77S
bps0002 at auburn.edu
Tue Feb 8 00:43:25 CET 2011
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.
More information about the R-help
mailing list