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

如何用R的split()函数按分组因子拆分数据?含FASTA序列场景

R中split()函数的分组参数设置及FASTA序列按物种拆分示例

基础场景:向量x的分组拆分

已知R语言向量x的内容如下:

> x
[1] "A" "A" "A" "B" "B" "C"

要通过split()将其拆分为A、B、C三个组,直接把向量x本身作为分组因子参数f传入就行,代码如下:

split(x, f = x)

运行后输出结果符合预期:

$A
[1] "A" "A" "A"

$B
[1] "B" "B"

$C
[1] "C"

split()会自动识别f里的唯一值作为分组依据,这里x的元素就是现成的分组标识,直接用它当f参数完全满足需求。

实际场景:FASTA序列按物种拆分

需求说明

处理FASTA序列时,多个序列对应同一物种,需要按物种拆分序列。FASTA头信息示例如下:

">COLFG678-14|MZ630002|Agabus|adpressus|AEC6988|COI-5P"

其中物种为Agabus adpressus,期望输出格式为:

$`Agabus adpressus`
[1] "Seq1" "Seq2" "Seq3"

实现步骤

  1. 提取物种名:先从FASTA头信息里提取完整物种名(头信息按|分割后,第3和第4字段拼接)。假设所有FASTA头存在向量headers中,代码如下:
# 分割每个头信息为字段
header_fields <- strsplit(headers, "\\|")
# 拼接第3、4字段得到物种名
species_names <- sapply(header_fields, function(x) paste(x[3], x[4], sep = " "))
  1. 按物种拆分序列:假设所有序列存在向量seqs中,用split()函数把species_names作为分组因子f传入即可:
split_seqs <- split(seqs, f = species_names)

执行后就能得到以物种名为列表名、对应物种所有序列为元素的分组结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 16:35:20