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

R语言提取仿真统计文件每行统计项与首个数值的实现方法

解决方案

一、正则表达式修改方法

你之前的写法返回结果带前置空白,是因为str_extract默认返回整个正则匹配的内容,你写的\\s+(\\S+)会把前置的空白也纳入匹配结果。可以用以下两种方法修改:

  • 用正向零宽断言:把提取数值的正则改为"(?<=\\s)\\S+",零宽断言只会校验字符前置是否为空白,不会把空白本身纳入匹配结果,返回内容就是纯数值。
  • 用str_match取捕获组:执行str_match(line, "^\\S+\\s+(\\S+)")[,2],直接取第一个捕获组的内容,即可得到不带前置空白的数值。

二、更优雅的批量处理方案

你的统计文件格式非常规整,完全不需要逐行循环提取,直接用内置的表格读取函数即可一次性生成结构化的统计结果:

stats_df <- read.table(
  file = "你的统计文件路径",
  skip = 1, # 跳过开头的"---------- Begin Simulation Statistics ----------"注释行
  header = FALSE,
  col.names = c("stat_name", "stat_value"),
  fill = TRUE,
  comment.char = "#", # 自动忽略#之后的所有注释内容
  colClasses = c("character", "numeric") # 直接指定列类型,无需后续转换
)

执行后stats_df就是包含所有统计项名称和对应数值的数据框,后续可以直接按需求过滤、查询,比逐行处理效率高很多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:06:02