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

R语言data.frame行处理:移除指定区间行并匹配追加内容

R语言数据框处理解决方案

原始数据与需求

原始数据框:

df <- data.frame(V1 = c(">NP_abc d", "1", "Efg", "hij", "2", "3KL", 
                        "VGSFNGWDGRRHPMRLRHPTGVWEIFVPRLQPGEVYKYEILGAHGILPLKSDPMALATTLPPDTASKISAPLKFEWHDQD",
                        ">WP_mno p", "Rst", "uw", "adb", "cgi",
                        "PGLGIRLDKLASFVVTLSLYAGAYLTEVFRAGLLSIHKGQREAGLAIGLGEWQVRAYIIVPVMLRNVLPALSNNFISLFK",
                        ">GP_hgs i Hhh yuy",
                        "WEGLETPVQVVWRHALLPVIELPLAALHDPEPLNLLDAPLLRLVHAEDPDNQRIVAVLLFHHLIMDHVALDLLSHELQAV"))

匹配目标向量:

some_vector <- c("Efg", "hij", "Rst", "adb")

核心需求:

  • 移除位于>开头行和长度为80的行之间的所有中间行
  • 若中间行字符串在some_vector中,按出现顺序追加到对应>开头行末尾(以空格分隔)

解决方案代码

library(dplyr)
library(tidyr)

# 标记每行类型:header(>开头)、target(长度80)、other(中间行)
df <- df %>%
  mutate(
    type = case_when(
      startsWith(V1, ">") ~ "header",
      nchar(V1) == 80 ~ "target",
      TRUE ~ "other"
    )
  )

# 为每个header-target区间创建分组
df <- df %>%
  mutate(group = cumsum(type == "header"))

# 分组处理:合并匹配内容、提取目标行
processed <- df %>%
  group_by(group) %>%
  summarise(
    header = paste(
      V1[type == "header"],
      paste(V1[type == "other" & V1 %in% some_vector], collapse = " "),
      sep = " "
    ),
    target = V1[type == "target"]
  ) %>%
  # 将分组结果展开为单列
  pivot_longer(cols = c(header, target), values_to = "V1") %>%
  select(V1) %>%
  # 去除多余空格(无匹配内容时的冗余空格)
  mutate(V1 = trimws(V1))

# 转换为最终数据框
df1 <- as.data.frame(processed)

代码逻辑说明

  1. 行类型标记:通过startsWith识别>开头的标题行,nchar识别长度为80的目标行,剩余归为中间行。
  2. 区间分组:用cumsum累加标题行的出现次数,实现每个标题行到下一个标题行前的区间单独分组。
  3. 内容合并与提取:
    • 每组内将标题行与匹配some_vector的中间行用空格拼接
    • 提取每组的目标行
  4. 格式整理:将分组后的标题和目标行转为单列,用trimws清理多余空格,得到符合要求的数据框。

验证结果

运行代码后,df1的输出与预期完全一致:

print(df1)
#                                                                 V1
# 1                                                >NP_abc d Efg hij
# 2 VGSFNGWDGRRHPMRLRHPTGVWEIFVPRLQPGEVYKYEILGAHGILPLKSDPMALATTLPPDTASKISAPLKFEWHDQD
# 3                                                >WP_mno p Rst adb
# 4 PGLGIRLDKLASFVVTLSLYAGAYLTEVFRAGLLSIHKGQREAGLAIGLGEWQVRAYIIVPVMLRNVLPALSNNFISLFK
# 5                                             >GP_hgs i Hhh yuy
# 6 WEGLETPVQVVWRHALLPVIELPLAALHDPEPLNLLDAPLLRLVHAEDPDNQRIVAVLLFHHLIMDHVALDLLSHELQAV

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 03:47:53