gpt4 book ai didi

r - 将连续的数字折叠为一串范围

转载 作者:行者123 更新时间:2023-12-03 12:02:25 25 4
gpt4 key购买 nike

假设我有以下数字 vector :

vec = c(1, 2, 3, 5, 7, 8, 9, 10, 11, 12)

我正在寻找一个函数,该函数将创建一个字符串,该字符串以人类的方式汇总数字列表。也就是说,每次连续的数字(此处为 1, 2, 37, 8, 9, 10, 11, 12)都会折叠成其起始值和结束值:
"1-3, 5, 7-12"

如何在R中做到这一点?

最佳答案

添加另一种替代方法,可以使用deparse编码方法。例如:

deparse(c(1L, 2L, 3L))
#[1] "1:3"

利用 as.character“降级”给定的“列表”作为输入的优势,我们可以使用:
as.character(split(as.integer(vec), cumsum(c(TRUE, diff(vec) != 1))))
#[1] "1:3" "5" "7:12"
toString(gsub(":", "-", .Last.value))
#[1] "1-3, 5, 7-12"

关于r - 将连续的数字折叠为一串范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34636461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com