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

在R中使用iCAMP将phylobin的ASV ID替换为bin.id.new生成pdid.bin

需求与解决方案

需求背景

使用R语言的iCAMP工具处理数据时,现有一个包含进化树分箱信息的大型列表phylobin,其中:

  • phylobin[["sp.bin"]]:行名为ASV ID,包含bin.id.new列(需替换为的目标整数值)
  • phylobin[["bin.united.sp"]]:存储所有分箱及其对应ASV ID的列表

需要生成新的分箱列表pdid.bin,将原列表中的ASV ID替换为phylobin[["sp.bin"]]$bin.id.new对应的整数值。

数据快照

# phylobin[["sp.bin"]]前几行结构
> dput(head(phylobin[["sp.bin"]]))
structure(list(bin.id.strict = 1:6, bin.id.united = c(5155L, 
5155L, 5155L, 5155L, 5155L, 5155L), bin.id.new = c(1, 1, 1, 1, 
1, 1)), row.names = c("58280213177cd49ae003f799669083b1", "49da809110cfb2291f15aa751868f909", 
"dda715fd5e83bd6706ccb377023a7b04", "d22c52adf22aaab347d1de64bc394ab4", 
"11e64c80d5ba65bae3e2061c1a71deeb", "ba2e725cf081c898027196308f0b9279"
), class = "data.frame")

# phylobin[["bin.united.sp"]]前几行结构
> dput(head(phylobin[["bin.united.sp"]]))
list(c("58280213177cd49ae003f799669083b1", "49da809110cfb2291f15aa751868f909", 
"dda715fd5e83bd6706ccb377023a7b04", "d22c52adf22aaab347d1de64bc394ab4", 
"11e64c80d5ba65bae3e2061c1a71deeb", "ba2e725cf081c898027196308f0b9279"))

解决方案

通过创建ASV-ID到bin.id.new的映射关系,再批量替换实现需求,代码如下:

# 1. 生成ASV ID到bin.id.new的命名向量映射
asv_to_bin <- phylobin[["sp.bin"]]$bin.id.new
names(asv_to_bin) <- rownames(phylobin[["sp.bin"]])

# 2. 遍历原分箱列表,替换ASV ID为对应bin.id.new值
pdid.bin <- lapply(phylobin[["bin.united.sp"]], function(asv_ids) {
  asv_to_bin[asv_ids]
})

代码说明

  • 第一步生成的asv_to_bin是命名向量,以ASV ID为名称,对应值为目标整数,可快速完成索引匹配
  • 第二步用lapply遍历原分箱列表的每个元素,直接通过向量索引替换得到新的分箱列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 16:52:26