当列变得低于另一列并且变得更高时,如何获得?

Orh*_*zar 2 r data.table

我正在使用大型data.table.请考虑以下示例:

#1st row is 
A <- c(8,8,8,8,8,8,8,8,8,8) 
#2nd row is
B <- c(9,9,7,6,5,6,7,7,8,8)
Run Code Online (Sandbox Code Playgroud)

我需要知道B何时开始低于A并且当它变得高于或等于A.

我想要的是这样的表:

begin end
  3    9
Run Code Online (Sandbox Code Playgroud)

Sot*_*tos 6

这是一个想法,使用sign,

which(c(FALSE, diff(sign(A - B)) != 0))
#[1] 3 9
Run Code Online (Sandbox Code Playgroud)