R语言将矩阵每行转为字符向量并存为命名列表的方法
问题背景
现有一个记录生物通路与对应基因关联关系的0-1矩阵:
- 矩阵行对应生物通路
- 矩阵列对应相关基因
- 单元格取值为1代表对应基因存在于该通路中,取值为0代表不存在
示例矩阵构造代码:
mat=matrix(c(0,0,1,0,1,1,1,1,1), nrow = 3, ncol = 3) row.names(mat) = c("pathwayX", "pathwayY", "pathwayZ") colnames(mat) = c("Gene1", "Gene2", "Gene3")
构造完成的示例矩阵结构:
| Gene1 | Gene2 | Gene3 | |
|---|---|---|---|
| pathwayX | 0 | 0 | 1 |
| pathwayY | 0 | 1 | 1 |
| pathwayZ | 1 | 1 | 1 |
需求说明
需要通过R语言生成两个符合pathfindR包自定义基因集输入要求的命名列表:
gene_sets列表:每个元素对应一个通路的全部组成基因,存储为字符向量,列表名与通路名一致。示例预期输出结构:> gene_sets $pathwayX [1] "Gene3" $pathwayY [1] "Gene2" "Gene3" $pathwayZ [1] "Gene1" "Gene2" "Gene3"description列表:每个元素存储对应通路的名称字符向量,列表名与通路名一致。示例预期输出结构:> description $pathwayX [1] "pathwayX" $pathwayY [1] "pathwayY" $pathwayZ [1] "pathwayZ"
R语言实现方法
按行遍历矩阵,筛选取值为1的列名即可快速构造两个符合要求的列表,可直接传入pathfindR后续分析流程,代码如下:
# 构造基因集列表 gene_sets <- apply(mat, 1, function(row) { names(row[row == 1]) }) # 构造通路描述列表 description <- as.list(setNames(rownames(mat), rownames(mat)))
内容的提问来源于stack exchange,提问作者plicht
相关产品推荐
相关产品推荐

