r - 整数向量的区间长度总和

标签 r intervals

假设我有这个整数 vector :

> int.vec
 [1]  1  2  3  5  6  7 10 11 12 13

(从 int.vec <- c(1:3,5:7,10:13) 创建)

我正在寻找一个函数,它将返回此向量中所有间隔的长度之和。

所以基本上是int.vec该函数将返回:

3+3+4 = 10

最佳答案

length(int.vec)
# 10

您的间隔是数字序列,x1:xnx1:xmx1:xp,其中每个向量的长度 (或本例中的间隔)分别为 nmp

整个向量的长度为length(x1:xn) + length(x1:xm) + length(x1:xp), 与 length(n + m + p) 相同。

<小时/>

现在,如果我们确实对每个序列向量的长度感兴趣,我们可以这样做

int.vec <- c(1:3,5:7,10:13)

## use run-length-encoding (rle) to find sequences where the difference == 1
v <- rle(diff(int.vec) == 1)[[1]]
v[v!=1] + 1
# [1] 3 3 4

而且,正如 @AHandcartAndMohair 所指出的,如果您正在使用列表,则可以使用 lengths

int.list <- list(c(1:3), c(5:7), c(10:13))
lengths(int.list)
# [1] 3 3 4

关于r - 整数向量的区间长度总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36122916/

相关文章:

r - 生成事件一周内所有天数的指标变量

algorithm - 找出一组区间的最大深度

遍历非重叠区间的算法

python - Python-根据时间信息(即时,间隔)计算项目之间的相似性

mysql - 如何结合 Date_format 和 Date_sub

algorithm - 重叠区间

r - 按唯一行分布数据集

使用数据框名称重命名列表内数据框的列

r - 之间有什么区别。和.data?

r - 循环遍历多个列并在 R 中为每个列绘制一个图?