You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将点分隔数字字符串拆分为三元组列表?

解决方案

步骤1:清理原始字符串

先清除字符串里的换行符、空格,只保留数字和分隔符.:

raw_str <- ".296.294.255.268.313.278.311.270.290.305.322.252.276.286.301.305.264.301.251.269.274.311.304.
              230.280.264.327.301.301.265.287.285.306.265.282.319.235.262.278.249.239.284.237.249.289.250.
              282.240.256.287.303.310.314.242.302.289.268.315.264.293.261.298.310.242.253.299.278.272.333.
              272.295.306.276.317.286.250.272.272.274.282.308.262.285.326.321.285.270.270.241.283.305.319.
              246.263.311.299.295.315.263.304.279.286.286.299.282.285.289.298.277.292.296.282.267.245.304.
              322.252.265.313.288.310.281.272.266.243.285.309.295.269.295.308.275.316.267.283.311.300.252."

# 清除所有换行、空白字符
clean_str <- gsub("[\\n\\s]", "", raw_str)

步骤2:拆分并转换为数值向量

按.拆分后,过滤掉开头的空字符串(原字符串以.开头导致的无效元素),再转为数值类型:

# 拆分字符串
split_chars <- strsplit(clean_str, "\\.")[[1]]
# 过滤空元素并转数值
nums <- as.numeric(Filter(nzchar, split_chars))

步骤3:按每3个数字分组

用split()结合gl()生成分组标识,将数值向量拆分为每3个一组的列表:

# 计算总分组数
group_num <- length(nums) %/% 3
# 拆分为目标列表
result_list <- split(nums, gl(group_num, 3))

此时result_list就是包含多个子向量的列表,每个子向量对应3个数字。如果一定要生成List1、List2这类单独变量,可以用以下代码导出到全局环境:

# 给列表元素命名
names(result_list) <- paste0("List", seq_along(result_list))
# 导出变量
list2env(result_list, envir = .GlobalEnv)

问题根源说明

  • 原字符串包含换行和空格,直接拆分后部分元素带空白字符,导致as.numeric转换失败;
  • 字符串以.开头,拆分后第一个元素是空字符串,干扰数值转换流程。

内容的提问来源于stack exchange,提问作者Alienvolm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 08:54:15