[R] search species with all absence in a presence-absence matrix

arun smartpink111 at yahoo.com
Sat Sep 21 17:51:11 CEST 2013


Hi Elaine,
#You can either convert the .xls dataset to .csv and read it with ?read.csv() or use one of the packages to read excel dataset

library(XLConnect) 
wb<- loadWorkbook("is_matrix.xls")
dataRM<- readWorksheet(wb,sheet="is_matrix",rownames=1)
dim(dataRM)
#[1] 22 23
 mat1<- as.matrix(dataRM)
matSub<- mat1[,colSums(mat1)==0,drop=FALSE]
 head(matSub,3)
#         D0008 D0009 D0010 D0011 D0012 D3396
#Sakhalin     0     0     0     0     0     0
#Hokkaido     0     0     0     0     0     0
#Korea        0     0     0     0     0     0
colnames(mat1)[colSums(mat1)==0]
#[1] "D0008" "D0009" "D0010" "D0011" "D0012" "D3396"


#I used lst1, lst2 etc just to create some data.
A.K.


________________________________
From: Elaine Kuo <elaine.kuo.tw at gmail.com>
To: arun <smartpink111 at yahoo.com> 
Sent: Saturday, September 21, 2013 7:10 AM
Subject: Re: [R] search species with all absence in a presence-absence matrix



Hello Arun, 

Thanks for the code.
I replaced my file (dataRM) with lst2 but
an error showed up.
It said
Error in colSums(mat1): x must be at an
array or at least two dimensions

I am sure the x (dataRM) is two-dimension.

Please kindly advise any code modification.
Also, I attach part of my data in the
e-mail.
Thank you again.

Elaine
Code
load("f:/b_W_line/R_workspace/R_workspace_R_4874/R_workspace_RM/dataset_RM_3546.RData")
 dim(dataRM)
 str(dataRM)

 mat1<-dataRM[[1]]
 mat1[,colSums(mat1)==0,drop=FALSE](error)
 colnames(mat1)[colSums(mat1)==0]



On Sat, Sep 21, 2013 at 8:57 AM, arun <smartpink111 at yahoo.com> wrote:

Hi,
>Try this:
>
> set.seed(248)
> lst1<- lapply(1:1000,function(i) matrix( sample(0:1,15*100,replace=TRUE),ncol=100,dimnames=list(paste("Island",LETTERS[1:15]),  paste0("D",sprintf("%04d",1:100)))))
> lst2<-lst1[sapply(lst1,function(x) any(colSums(x)==0))]
>##The above steps are just to create some matrices with zeros in all the "islands"
>mat1<-lst2[[1]]
> mat1[,colSums(mat1)==0,drop=FALSE]
>#         D0038
>#Island A     0
>#Island B     0
>#Island C     0
>#Island D     0
>#Island E     0
>#Island F     0
>#Island G     0
>#Island H     0
>#Island I     0
>#Island J     0
>#Island K     0
>#Island L     0
>#Island M     0
>#Island N     0
>#Island O     0
>colnames(mat1)[colSums(mat1)==0]
>#[1] "D0038"
> mat2<-lst2[[3]]
> colnames(mat2)[colSums(mat2)==0]
>#[1] "D0086"
>
>A.K.
>
>
>
>
>
>----- Original Message -----
>From: Elaine Kuo <elaine.kuo.tw at gmail.com>
>To: "r-help at r-project.org" <r-help at r-project.org>
>Cc:
>Sent: Friday, September 20, 2013 7:14 PM
>Subject: [R] search species with all absence in a presence-absence matrix
>
>
>Dear list
>
>
>
>I have a matrix composed of islandID as rows and speciesID as columns.
>
>IslandID: Island A, B, C….O (15 islands in total)
>
>SpeciesID: D0001, D0002, D0003….D0100 (100 species in total)
>
>
>
>The cell of the matrix describes presence (1) or absence (0) of the species
>in an island.
>
>
>
>Now I would like to search the species with absence (0)
>
>in all the islands (Island A to Island O.)
>
>
>
>Please kindly advise the R code for the search purpose.
>
>Thank you.
>
>
>
>Elaine
>
>
>    [[alternative HTML version deleted]]
>
>______________________________________________
>R-help at 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.
>
>     



More information about the R-help mailing list