【发布时间】:2020-02-07 09:44:06
【问题描述】:
我有两个身份配置文件向量(值介于 0 和 1 之间)和一个固定长度(由基础序列确定)。
我想计算两个配置文件的交叉点,即代表配置文件(具有更高身份)发生变化的点。
我目前的解决方案是基于符号计算和连续数字的乘积计算。你能想出更优雅的方式吗?
a <- c(1,1,1,0.8,0.8,0.8)
b <- c(0.8,0.8,0.8,1,1,1)
z <- sign(a - b)
res <- sapply(2:length(z),function(i){ z[i-1]*z[i] })
idx <- which(res == "-1")
plot(x=1:length(a),y=a,type="b")
points(x=1:length(b),y=b,type="b")
abline(v=idx,col="red")
【问题讨论】:
-
如果保证交集确实存在,可以使用二分查找。但这仅适用于长数据集。