首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将没有重复的整数向量转换为多个连续和离散的部分,并使用R以特定格式导出?

如何将没有重复的整数向量转换为多个连续和离散的部分,并使用R以特定格式导出?
EN

Stack Overflow用户
提问于 2020-11-18 15:09:10
回答 2查看 26关注 0票数 0

以下是示例数据:

代码语言:javascript
复制
dat<-c(1:10,14,17:20,30)

我想要的输出格式是:

代码语言:javascript
复制
1-10,14,17-10,30

我有一个很大的相似向量,这就是为什么我尝试用R来做它。有没有人能给点提示或建议?非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-18 15:13:17

可以使用diff创建连续值的组,并在tapply中使用它,如果值的长度大于1,则可以粘贴每个组的第一个和最后一个值。

代码语言:javascript
复制
dat <- c(1:10,14,17:20,30)

result <- as.character(tapply(dat, cumsum(c(TRUE, diff(dat) > 1)), function(x) {
  if(length(x) == 1) x else paste(x[1], x[length(x)], sep = '-')
}))

result
#[1] "1-10"  "14"    "17-20" "30"   

如果您希望输出为一个字符串。

代码语言:javascript
复制
toString(result)
#[1] "1-10, 14, 17-20, 30"
票数 3
EN

Stack Overflow用户

发布于 2020-11-18 16:36:33

Base R解决方案(在原理上与Ronak的非常相似:

代码语言:javascript
复制
sapply(split(dat, cumsum(c(FALSE, diff(dat) > 1))), function(x){
    paste(unique(range(x)), collapse = "-")
  }
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64888547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档