Hi Karla, This might help. I haven't tested it exhaustively. transect_overlap<-function(x) { if(!is.matrix(x)) stop("x must be a 2x2 matrix") if(x[1,1] <= x[2,1]) { if(x[2,2] > x[1,2]) overlap<-x[1,2]-x[2,1] else overlap<-x[2,2]-x[2,1] } else { if(x[1,2] > x[2,2]) overlap<-x[2,2]-x[1,1] else overlap<-x[1,2]- x[1,1] } if(overlap < 0) overlap<-0 return(overlap) }
Jim On Tue, Jul 14, 2015 at 7:44 AM, Karla Shikev <karlashi...@gmail.com> wrote: > Hi there, > > This is a newbie question, and I'm sure there are simple ways to do this, > but I've spent my entire afternoon and I couldn't get it to work. > > Imagine that I got my samples distributed along a transect and my data > refer to the first and last occurrences of each sample. For instance: > >> dat<-matrix(c(1,3,2.5,4), ncol=2, byrow=TRUE) >> dat > [,1] [,2] > [1,] 1.0 3 > [2,] 2.5 4 > > > The first line indicates that the first and last occurrences of this > subject were 1 and 3, respectively, whereas the second subject was found > between 2.5 and 4. > > I need a simple way to calculate the overlap of their extents (0.5 in this > case). This way should provide 0 if there is no overlap, and it should also > work in the case where one subject is found only within the extent of the > second subject. > > Any help will be greatly appreciated. > > Karla > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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. ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.