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

在R语言中将基因集字符向量列表转换为二进制矩阵

解决方法

基础R实现(无需额外包)

先提取所有唯一基因,再逐个通路判断基因是否存在,生成二进制矩阵:

# 定义输入的通路-基因列表
gene_sets = list(
  pathwayX = c("Gene3"),
  pathwayY = c("Gene2", "Gene3"),
  pathwayZ = c("Gene1", "Gene2", "Gene3")
)

# 获取所有唯一基因并按字母排序
all_genes <- sort(unique(unlist(gene_sets)))

# 生成二进制矩阵
binary_matrix <- do.call(rbind, lapply(gene_sets, function(pathway_genes) {
  as.integer(all_genes %in% pathway_genes)
}))

# 设置列名
colnames(binary_matrix) <- all_genes

# 查看结果
binary_matrix

运行后输出结果:

Gene1 Gene2 Gene3
pathwayX     0     0     1
pathwayY     0     1     1
pathwayZ     1     1     1

tidyverse 实现(语法更直观)

如果熟悉tidyverse工具链,可以用数据框转换的方式实现:

library(tidyverse)

# 转换为二进制矩阵
binary_matrix <- enframe(gene_sets, name = "pathway", value = "gene") %>%
  unnest(gene) %>%
  mutate(present = 1) %>%
  pivot_wider(names_from = gene, values_from = present, values_fill = 0) %>%
  column_to_rownames("pathway") %>%
  as.matrix()

# 查看结果
binary_matrix

该方法通过将列表转为长格式数据框,再转换为宽格式并填充缺失值为0,最终得到目标矩阵。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 01:09:29