[R] How can I write logical function in R?
arun
smartpink111 at yahoo.com
Fri May 31 00:37:59 CEST 2013
Hi,
May be this helps:
speciesTime1New<- speciesTime1[,-1]
speciesTime2New<- speciesTime2[,-1]
imm1<-as.data.frame(matrix(0,4,3))
imm1[]<-lapply(seq_len(ncol(speciesTime2New)),function(i) ifelse(speciesTime2New[,i]==1& speciesTime2New[,i]!=speciesTime1New[,i],1,0))
Ext1<-as.data.frame(matrix(0,4,3))
Ext1[]<-lapply(seq_len(ncol(speciesTime1New)),function(i) ifelse(speciesTime1New[,i]==1& speciesTime1New[,i]!=speciesTime2New[,i],1,0))
library(plyr)
imm1New<-mutate(imm1,sum=rowSums(cbind(sp1,sp2,sp3)))
Ext1New<-mutate(Ext1,sum=rowSums(cbind(sp1,sp2,sp3)))
imm1New
# sp1 sp2 sp3 sum
#1 1 0 0 1
#2 0 0 1 1
#3 0 0 0 0
#4 1 1 1 3
Ext1New
# sp1 sp2 sp3 sum
#1 0 0 0 0
#2 1 0 0 1
#3 0 0 1 1
#4 0 0 0 0
#or
imm2<-sapply(seq_len(ncol(speciesTime2New)),function(i) ifelse(speciesTime2New[,i]==1& speciesTime2New[,i]!=speciesTime1New[,i],1,0))
Ext2<-sapply(seq_len(ncol(speciesTime1New)),function(i) ifelse(speciesTime1New[,i]==1& speciesTime1New[,i]!=speciesTime2New[,i],1,0))
imm2$sum<-rowSums(imm2)
Ext2<-as.data.frame(Ext2)
Ext2$sum<-rowSums(Ext2)
colnames(imm2)<-colnames(imm1New)
colnames(Ext2)<-colnames(Ext1New)
identical(imm2,imm1New)
#[1] TRUE
identical(Ext2,Ext1New)
#[1] TRUE
A.K.
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
===
More information about the R-help
mailing list