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]]
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 <karlashikev at 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 at 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.
Fantastic. Thanks! On Tue, Jul 14, 2015 at 7:03 AM, Jim Lemon <drjimlemon at gmail.com> wrote:> 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 <karlashikev at 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 at 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. >[[alternative HTML version deleted]]