我是一名生物专业的学生,使用 R 生成一些可视化,显示哪些人类蛋白质(uniprots)被不同的细菌菌株靶向。
# sample data
human.uniprots <- c("P15311", "P0CG48", "Q8WYH8", "P42224", "Q9NXR8",
"P40763", "P05067", "P60709", "Q9UDW1", "Q9H160",
"Q9UKL0", "P26038", "P61244", "O95817", "Q09472",
"P15311","P05067", "P60709", "Q9UDW1", "Q9H160")
strains <- rep(c("A", "B", "C", "C"), each = 5)
final <- cbind(human.uniprots, strains)
我正在尝试生成一个共现矩阵/热图......类似于
h.map <- data.frame(matrix(nrow = length(unique(human.uniprots)),
ncol = length(unique(strains)) + 1))
h.map.cols <- c("human_uniprots", "A", "B", "C")
colnames(h.map) <- h.map.cols
...其中列有菌株,行有蛋白质,数据框单元格填充了蛋白质与菌株相互作用的次数。因此,如果应变 A、B 和 C 都与一个 uniprot 相互作用,那么它们在该 uniprot 行的单元格中的值都应该为 3。
我已经尝试制作唯一应变和human_uniprots的元组列表,然后从我要填充的矩阵中搜索与应变和人类uniprot对匹配的元组,如果匹配则添加“1”......但是我不确定如何在 R 中使用元组。然后我看到了这个:Populating a co-occurrence matrix
这就是我想要的,但我不了解用法或语法...... sparse() 甚至是 R 中的函数吗?
此外……最好按照与所有菌株相互作用的蛋白质对所有蛋白质进行排名。因此,与所有菌株相互作用的所有蛋白质都应位于顶部,然后是与 2 个菌株相互作用的蛋白质,然后是 1 个菌株……