r语言 - 如果在一组基因列表中存在大多数基因,如何保留?



我有9个基因列表,每个长度为2000个基因。如果基因出现在6个或更多的列表中,我想保留它们。我不知道如何指定这个,我一直在使用相交函数。

任何帮助都是感激的。

首先,使用一个小的辅助函数重新创建数据:

# gene generating function as a trigram of lower case letters
gene <- function(...) {
paste(sample(letters, 3), collapse = "")
}
# creating lists of genes
gene_lists <- lapply(seq(9), function(x) sapply(seq(2000), gene))

然后提取唯一元素:

# getting unique genes
unique_genes <- unique(unlist(gene_lists))
length(unique_genes)
[1] 10661

这里我们可以检查合成数据有一些冗余:

# checking if there are enough redundant genes
stopifnot(length(unique_genes) < length(unlist(gene_lists)))

然后遍历唯一的基因并列出出现次数:

# iterating over unique_genes
gene_occurence <- sapply(unique_genes, function(gene) {
# iterating over lists
# sum counts the total number of occurence
sum(sapply(gene_lists, function(x) { gene %in% x }))
})
length(gene_occurence)
[1] 10661
table(gene_occurence)
1    2    3    4    5    6 
6017 3330 1050  231   31    2 

然后得到共同基因:

limit <- 6
common_genes <- unique_genes[which(gene_occurence >= limit)]
common_genes
[1] "ngu" "het"

相关内容

  • 没有找到相关文章

最新更新