I figured there would be an even more straightforward way, but that works David, thanks.
There has to be a way to get the output I want/need (see below). I tried to bind or merge the elements of "apply(samptbl, 2, table)" but with no success. I could probably make a for loop with a merge statement, it would work.. but I'm guessing unnecessary and just plain ugly. ## what I want/need spA spB spC spD spa spF spG site1 8 13 6 13 32 0 28 site2 31 25 0 0 25 19 0 site3 0 0 9 51 0 0 40 site4 27 19 0 0 22 32 0 If you know, I'd appreciate it.. thanks again for the help. David Winsemius wrote: > > > On Feb 6, 2011, at 3:25 PM, B77S wrote: > >> >> Hello, >> How can I randomly sample individuals within a sites from a site >> (row) X >> species abundance (column) data frame or matrix? As an example, the >> matrix >> "abund2" made below. >> >> ##### (sorry, Im a newbie and this is the only way I know to get an >> example >> on here) >> >> abund1 <- c(150, 300, 0, 360, 150, 300, 0, 240, 150, >> 0, 60, >> 0, 150, 0, 540, 0, 0, 300, 0, 240, 300, 300, 0, 360, 300, 0, 600, 0) >> abund2 <- matrix(data=abund1, nrow=4, ncol=7) >> colnames(abund2) <- c("spA", "spB", "spC", "spD", "spa", "spF", "spG") >> rownames(abund2)<-c("site1", "site2", "site3", "site4") > > Perfect. Best submission of an example by a newbie in weeks. > >> >> ##### >> >>> abund2 >> spA spB spC spD spa spF spG >> site1 150 150 150 150 0 300 300 >> site2 300 300 0 0 300 300 0 >> site3 0 0 60 540 0 0 600 >> site4 360 240 0 0 240 360 0 >> >> How can I make a random subsample of 100 individuals from the >> abundances >> given for each site? > > samptbl <- apply(abund2, 1, function(x) sample(colnames(abund2), 100, > prob=x, replace=TRUE) ) > samptbl > > site1 site2 site3 site4 > [1,] "spG" "spa" "spD" "spF" > [2,] "spF" "spF" "spG" "spB" > [3,] "spF" "spB" "spC" "spA" > [4,] "spD" "spa" "spG" "spA" > [5,] "spF" "spa" "spD" "spa" > [6,] "spA" "spB" "spD" "spF" > [7,] "spA" "spF" "spD" "spA" > [8,] "spG" "spF" "spG" "spa" > [9,] "spF" "spF" "spG" "spa" > [10,] "spG" "spB" "spD" "spA" > > Snipped > > apply() always transposes the results when called with row margins. > The t() function would "fix" this if it needed to be arranged with > rows by site. You could check by further apply-(cation) of table to > the columns: > > apply(samptbl, 2, table) > $site1 > > spA spB spC spD spF spG > 8 13 6 13 32 28 > > $site2 > > spa spA spB spF > 25 31 25 19 > > $site3 > > spC spD spG > 9 51 40 > > $site4 > > spa spA spB spF > 22 27 19 32 > >> >> This is probably really easy. > > >> Thanks. >> Bubba >> -- >> View this message in context: >> http://r.789695.n4.nabble.com/Subsampling-out-of-site-abundance-matrix-tp3263148p3263148.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. > > David Winsemius, MD > West Hartford, CT > > ______________________________________________ > 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. > > -- View this message in context: http://r.789695.n4.nabble.com/Subsampling-out-of-site-abundance-matrix-tp3263148p3263488.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.