代码之家  ›  专栏  ›  技术社区  ›  Gabriel

计算2个向量之间的断点距离

  •  1
  • Gabriel  · 技术社区  · 6 年前

    我有2个向量;

    a<-c(1,2,4,3,5,6)   
    b<-c(1,4,3,2,5,6) 
    

    a和b之间的断点数为3 ([1,2] [2,4] [3,5])

    b和a之间的断点数为3 ([1,4] [2,3] [2,5])

    我基本上是想检查这些数字是否相邻并打印出来,这样我就不必每次都手工操作了

    1 回复  |  直到 6 年前
        1
  •  2
  •   Julius Vainora    6 年前

    这里有两种解决方案。首次出租

    a <- c(1, 2, 4, 3, 5, 6)
    b <- c(1, 4, 3, 2, 6, 5)
    

    注意,我切换了 b 。然后

    # Creating a vector of pairs of subsequent elements of x
    fun <- function(x) paste(head(x, -1), tail(x, -1))
    BP <- function(x, y) fun(a)[!fun(a) %in% fun(b)]
    BP(a, b)
    # [1] "1 2" "2 4" "3 5" "5 6"
    

    考虑此顺序。也就是说,它包括 5 6 作为断点。或者,如果顺序无关紧要,只是为了彼此相邻:

    BP <- function(x, y) fun(a)[!(fun(a) %in% fun(b) | fun(a) %in% fun(rev(b)))]
    BP(a, b)
    # [1] "1 2" "2 4" "3 5"
    

    然后 length(BP(a, b)) 给出距离。