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

使用R将txt文本行转列并将指标名设为表头的实现方法

解决思路

你的原始代码出错核心是读入文件的方式不对:read_table默认按空白符拆分列,会把原本单行的指标: 值结构拆乱,还会把分隔线、空行识别成异常数据,后续的转换逻辑自然无法得到预期结果。
你可以用逐行读取的方式先清洗脏数据,再拆分键值对,最后转成宽表即可,完整实现如下:

实现代码

library(tidyverse)

# 逐行读入文件,自动跳过空行
raw_lines <- read_lines("summary.txt", skip_empty_rows = TRUE)

result <- raw_lines %>%
  # 过滤掉所有由横线组成的分隔行
  str_subset("^-+$", negate = TRUE) %>%
  # 过滤掉没有对应数值的无效行(比如末尾只有冒号的Annotation行)
  str_subset(":.+") %>%
  # 按`: `把每行拆成指标名、数值两列
  str_split_fixed(": ", n = 2) %>%
  as_tibble(.name_repair = ~c("metric", "value")) %>%
  # 如果你只需要INDEL相关的三个指标,保留这行;需要全量指标就删除这行
  filter(str_detect(metric, "INDEL")) %>%
  # 转成宽表,指标名作为列名
  pivot_wider(names_from = metric, values_from = value) %>%
  # 可选:将值转为数值类型,方便后续计算
  mutate(across(everything(), as.numeric))

# 查看结果
print(result)

# 导出为制表符分隔的文件,和你给出的示例格式一致
write_tsv(result, "processed_summary.txt", col_names = TRUE)

输出效果

运行后得到的结果结构和你要求的完全一致:

Precision_INDEL Sensitivity_INDEL F_Measure_INDEL
           <dbl>             <dbl>           <dbl>
         0.1199             0.941           0.213

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

相关产品推荐
方舟 Agent Plan

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

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