如何在R中将数据框中的数字序列转换为指定格式的文本文件
实现思路
- 第一步:给连续数值分组。通过计算相邻数值的差值,差值大于1即判定为新分组的起点
- 第二步:生成分组缩写。单元素组直接保留数值,多元素连续组拼接首尾数值用
-连接 - 第三步:按每行最多3个分段的规则拆分所有缩写段
- 第四步:处理行尾逗号,非最后一行末尾追加逗号,最后一行不追加
- 第五步:将处理后的行直接写入文本文件
完整可运行代码
# 示例数据 test <- data.frame(N=c(1,2,3,5,7,8,9,11,13,14,15)) # 1. 连续数值分组 x <- test$N grp <- cumsum(c(1, diff(x) > 1)) # 2. 生成分组缩写 seg_list <- tapply(x, grp, function(v) { if (length(v) == 1) as.character(v) else paste(v[1], v[length(v)], sep = "-") }) # 3. 按每行最多3个分段拆分 line_grp <- (seq_along(seg_list) - 1) %/% 3 line_list <- tapply(seg_list, line_grp, paste, collapse = ",") # 4. 处理行尾逗号 n_lines <- length(line_list) if (n_lines >= 2) { line_list[1:(n_lines-1)] <- paste0(line_list[1:(n_lines-1)], ",") } # 写入文本文件 writeLines(line_list, con = "result.txt")
运行效果
执行后生成的result.txt内容完全符合要求:
1-3,5,7-9, 11,13-15
内容的提问来源于stack exchange,提问作者HSJ
相关产品推荐
相关产品推荐

