# [R] How can I write logical function in R?

Sarah Goslee sarah.goslee at gmail.com
Fri May 31 00:10:35 CEST 2013

```Or here's a simpler solution than you've been presented:

# this is easier without the site column
sp1 <- speciesTime1[,-1]
sp2 <- speciesTime2[,-1]

# will work for abundance as well as presence, as long as
# the minimum abundance is not less than 1
imm <- matrix(0, nrow=nrow(sp1), ncol=ncol(sp1))
imm[sp1 < 1 & sp2 > 0] <- sp2[sp1 < 1 & sp2 > 0]
colnames(imm) <- colnames(sp1)
imm <- data.frame(imm, sum=rowSums(imm))

# Exti is calculated the same way.

Sarah

On Thu, May 30, 2013 at 5:28 PM, Kristi Glover
<kristi.glover at hotmail.com> wrote:
> Hi R -Users
> I am sorry for bothering you. I was wondering what script can work to calculate an immigration and extinction from two tables (time 1 and time 2). I could easily  calculate them in the Excel for small data set, but I have very big data set. so that I was wondering to use R for this calculation. But I could not figure it out to write these logical function in R.  Would you provide me some hints?
>
> For example, I have these two tables
> speciesTime1<-structure(list(site = 1:4, sp1 = c(0L, 1L, 1L, 0L), sp2 = c(0L,
> 1L, 1L, 0L), sp3 = c(1L, 0L, 1L, 0L)), .Names = c("site", "sp1",
> "sp2", "sp3"), class = "data.frame", row.names = c(NA, -4L))
>
> speciesTime2<-structure(list(site = 1:4, sp1 = c(1L, 0L, 1L, 1L), sp2 = c(0L,
> 1L, 1L, 1L), sp3 = c(1L, 1L, 0L, 1L)), .Names = c("site", "sp1",
> "sp2", "sp3"), class = "data.frame", row.names = c(NA, -4L))
>
> >From these two tables: I wanted to make the following two tables (Imm and Exti]
> [Imm means number of "sp" present in speciesTime2, but not in speciesTime1]
> imm<-structure(list(sp1 = c(1L, 0L, 0L, 1L), sp2 = c(0L, 0L, 0L, 1L
> ), sp3 = c(0L, 1L, 0L, 1L), sum = c(1L, 1L, 0L, 3L)), .Names = c("sp1",
> "sp2", "sp3", "sum"), class = "data.frame", row.names = c(NA,
> -4L))
>
> [Exti=number of "sp" absent in speciesTime2, but present in speciesTime1]
>
> Exti<-structure(list(sp1 = c(0L, 1L, 0L, 0L), sp2 = c(0L, 0L, 0L, 0L
> ), sp3 = c(0L, 0L, 1L, 0L), sum = c(0L, 1L, 1L, 0L)), .Names = c("sp1",
> "sp2", "sp3", "sum"), class = "data.frame", row.names = c(NA,
> -4L))
> Thanks
> KG
> ===
>

--
http://www.functionaldiversity.org

```