首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从R中的字符串中将连续的整数组合在一起?

如何从R中的字符串中将连续的整数组合在一起?
EN

Stack Overflow用户
提问于 2017-06-28 03:12:15
回答 2查看 165关注 0票数 3

假设我有这个字符串

代码语言:javascript
复制
x <- "1:A 2:A 3:A 5:A 7:A 8:A 9:A"

在R中有没有一个函数可以让我准备这个字符串的各个部分,这样它就会输出:

代码语言:javascript
复制
[1] 1-3:A 5:A 7-9:A
EN

回答 2

Stack Overflow用户

发布于 2017-06-28 03:28:41

代码语言:javascript
复制
#Get the numeric values only
temp = as.integer(unlist(strsplit(gsub(":A", "", x), " ")))

#Split temp into chunks of consecutive integers
#Get range for each chunk and paste them together
#Paste :A at the end
sapply(split(temp, cumsum(c(TRUE, diff(temp) != 1))), function(x)
    paste(paste(unique(range(x)), collapse = "-"), ":A", sep = ""))
#      1       2       3 
#"1-3:A"   "5:A" "7-9:A" 
票数 2
EN

Stack Overflow用户

发布于 2017-06-28 03:17:51

strsplit()会将字符串转换为一个字符向量:

代码语言:javascript
复制
> x=strsplit(x, split=" ")[[1]]
[1] "1:A" "2:A" "3:A" "5:A" "7:A" "8:A" "9:A"

从那里,您可以获得字符形式的原始数字:

代码语言:javascript
复制
> x=gsub(":A", "", x)
[1] "1" "2" "3" "5" "7" "8" "9"

然后,您可以将其转换为数字,并随心所欲地对其进行子集。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44788101

复制
相关文章

相似问题

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