计算两个向量之间的断点距离
Calculate breakpoint distances between 2 vectors
我有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])
我主要是想检查数字是否相邻并打印出来,这样就不用每次都手动了
这里有两种解决方法。先让
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))
给出距离
我有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])
我主要是想检查数字是否相邻并打印出来,这样就不用每次都手动了
这里有两种解决方法。先让
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))
给出距离