removing singleton taxa
Hi Kate, This is pretty terse, but try df2 <- df1[,apply( df1, 2, function(x) sum( x>0)) > 1] This subsets the columns of df1 to those that have more than 1 presence. You may want to have a look at ?apply to see how it works. Good luck, Scott PS There are many ways to skin this cat. For example, you could look at colSums( df1>0), for example. This would do exactly the same thing as the apply() in the above.
On 18/12/12 11:22, Kate Boersma wrote:
Hi list. I am new to R and stuck on a very simple problem. Forgive me if this is not the right forum for my question - feel free to refer me elsewhere. I have a community matrix of sites*species, and I want to remove species that only occur in a single site (singleton taxa). It sounds so simple, but I have spent hours (no joke) with google and my reference books and am still stuck. Here's some example code: Species1 = sample(0:20, 10, replace=TRUE) Species2 = sample(0:20, 10, replace=TRUE) Species3 = c(0,0,0,0,0,0,0,4,0,0) df1 = data.frame(Species1, Species2, Species3) df1 I want to remove Species 3. Basically, I want R to count the number of non-zero cells in a column and remove the column if that number is 1 or 0. I have tried messing around with rowsums(), length(), table() and specnumber() in the vegan package and can't figure it out. Thanks, Kate
Scott Foster CSIRO Mathematics, Informatics and Statistics GPO Box 1538 Castray Esplanade Hobart 7001 Tasmania Australia Phone: (03) 6232 5178 Fax: (03) 6232 5000 Email: scott.foster at csiro.au