r - 在 R 中查找向量中的连续值

标签 r

这个问题在这里已经有了答案:





Create grouping variable for consecutive sequences and split vector

(5 个回答)


2年前关闭。




如果我有一个这样的向量:

dat <- c(1,2,3,4,5,19,20,21,56,80,81,92)

我怎样才能把它分解成一个列表:
[[1]]
1 2 3 4 5

[[2]]
19 20 21

[[3]]
56

[[4]]
80 81

[[5]]
92

最佳答案

只需使用 split结合 diff :

> split(dat, cumsum(c(1, diff(dat) != 1)))
$`1`
[1] 1 2 3 4 5

$`2`
[1] 19 20 21

$`3`
[1] 56

$`4`
[1] 80 81

$`5`
[1] 92

不完全是你所要求的,但“R.utils”包有几个相关的有趣功能:
library(R.utils)
seqToIntervals(dat)
#      from to
# [1,]    1  5
# [2,]   19 21
# [3,]   56 56
# [4,]   80 81
# [5,]   92 92
seqToHumanReadable(dat)
# [1] "1-5, 19-21, 56, 80-81, 92"

关于r - 在 R 中查找向量中的连续值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24837401/

相关文章:

r - 测试集中存在的训练集特征向量中看不见的值

r - 修复针织文档输出中 ## 后的不一致间距

r - ggplot2:在每个堆积图中添加两个观察值

python - 查找错误 : unknown encoding 'big5' under embeded python

r - R plm 包中有关长度相同但内容不同的索引的警告消息

r - 根据两列的条件求平均值

c++ - 在 Rcpp 函数中使用 Bool-Vector 进行子集化(Rcpp 初学者的问题...)

r - 在 R/igraph 中可视化具有 3 层(三方)的图/网络

R auto.arima "No ARIMA model able to be estimated"

r - R : constrOptim contraints 中的优化