如何基于模块列表批量为基因表达数据框添加模块归属布尔列
批量为基因表达数据添加模块布尔列
前提说明
假设你的gene_express数据框中,存储基因名称的列名为gene,请根据实际情况替换。
方法1:Base R 循环实现
直接遍历模块列表,为每个模块生成对应的布尔列,列名自动沿用模块名称:
# 遍历所有模块 for (mod_name in names(Module_list)) { # 添加新列:判断当前基因是否在该模块中 gene_express[[mod_name]] <- gene_express$gene %in% Module_list[[mod_name]] }
方法2:Tidyverse 管道风格实现
用purrr的imap遍历模块列表,结合bind_cols合并结果,适合习惯管道语法的场景:
library(dplyr) library(purrr) # 生成所有模块对应的布尔列,并合并到原数据框 module_bool_cols <- imap(Module_list, ~ gene_express$gene %in% .x) %>% bind_cols() gene_express <- bind_cols(gene_express, module_bool_cols)
关键说明
- 两种方法都会自动使用
Module_list中的模块名称作为新列的列名 - 核心逻辑都是用
%in%判断基因是否属于对应模块,替代手动的case_match - 如果你的基因名列不是
gene,记得替换代码中所有的gene_express$gene为实际列名
内容的提问来源于stack exchange,提问作者mathew olakunle
相关产品推荐
相关产品推荐

